2013-10-25 126 views
1

我有一個應用程序使用側面菜單,並且有幾個主屏幕可以從菜單和其他只能從這些屏幕訪問的主屏幕。iOS導航欄:從菜單更改左欄按鈕到返回

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

我已經把這樣的菜單按鈕:

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

但我無法弄清楚如何與後退按鈕更改它,當我需要它。

回答

1

假設比「主屏幕」你的意思是導航視圖控制器中的根(第一)視圖控制器對應於所選的側面菜單項,這可能是你的問題的一個解決方案:你可以爲你的所有視圖創建一個超類控制器,比如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:)]; 
    } 
} 
+1

Dariaa,如果我在viewDidLoad中的視圖控制器沒有被添加到navigationCotroller堆棧沒有錯,所以這段代碼將無法正常工作 – Manu

+0

我的壞,我的意思是viewWillAppear中 – dariaa

+0

的事情是,我只有一個導航控制器(在我找到的開源菜單庫中實現的控制器)。 –

0

你可以做,以兩種不同的方式:

首先是在viewDidAppear檢查,如果後退按鈕已經存在,當你推一個VC自動添加後退按鈕(但編程只是avalaible在viewDidAppear之後),然後決定添加或不添加菜單按鈕,第二個是添加一個參數給你的VC初始化方法,如isRoot或hasMenu或任何你喜歡的命名它,並使用該標誌決定添加菜單或後退按鈕

如果您選擇添加自己的背部按鈕,您可以調用此方法在你的背部選擇

[self.navigationController popViewControllerAnimated:YES]; 
0

最簡單的方法,國際海事組織,僅僅是單擊第一個視圖控制器的標題欄,並在屬性檢查器(⌥+⌘+4)改變你想要的導航項目信息的方式:標題 - >究竟會在後面的按鈕,顯示*,或者如果你想讓它說比第一的ViewController或的標題其他東西字「返回」你可以只是把它放在後退按鈕字段中。

*如果第二個視圖控制器的標題太長,它適合將與字改爲「返回」(如果單詞「返回」不適合它只會有箭頭符號)。