[英]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.