簡體   English   中英

iOS導航欄:將左欄按鈕從菜單更改為后退

[英]iOS Navigation Bar: change left bar button from menu to back

我有一個使用側面菜單的應用程序,其中有一些可以從菜單訪問的主屏幕,而其他一些只能從這些屏幕訪問的主屏幕。

我想要的是在導航欄上有一個菜單按鈕,它可以打開菜單,並且只能在主屏幕上看到。 在其他屏幕上,我想要一個后退按鈕,而不是菜單按鈕。

我已經將菜單按鈕設置為:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconMenu"] style:UIBarButtonItemStylePlain target:self.revealViewController action:@selector(revealToggle:)];

但是我想不出在需要時如何使用“后退”按鈕進行更改。

假設不是“主屏幕”,而是指導航視圖控制器中與所選側菜單項相對應的根(第一)視圖控制器,這可能是解決您問題的方法:您可以為所有視圖控制器創建超類,例如MyBaseViewController然后重寫viewWillAppear:方法,該方法將根據它是否是“主屏幕”來確定它應該具有默認的后退按鈕還是“ revealSideMenu”按鈕。

 - (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    if (self == [self.navigationController.viewControllers firstObject]) {
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage    imageNamed:@"IconMenu"] style:UIBarButtonItemStylePlain target:self.revealViewController action:@selector(revealToggle:)];
    }
}

您可以通過2種不同的方式來做到這一點:

第一個是在viewDidAppear中檢查后退按鈕是否已經存在(當您按下VC時,后退按鈕會自動添加,但是只有在viewDidAppear之后才能以編程方式獲得),然后決定是否添加菜單按鈕,

第二個是向您的VC初始化方法中添加一個參數,例如isRoot或hasMenu或您要命名的任何名稱,並使用該標志決定添加菜單或后退按鈕

如果您選擇添加自己的后退按鈕,則必須在后退選擇器中調用此方法

    [self.navigationController popViewControllerAnimated:YES];

IMO最簡單的方法是單擊第一個ViewController的標題欄,然后在Attribute Inspector (⌥+⌘+4)以所需的方式更改Navigation Item信息: Title- >后面將顯示的內容button *,或者如果您想讓它說第一個ViewController的Title或“ Back ”一詞之外的其他內容,您可以將其放在Back Button字段中。

*如果第二個ViewController的標題太長而無法容納它,則將其替換為單詞“ Back ”(如果單詞“ Back ”不適合,它將僅帶有箭頭符號)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM