2012-07-16 73 views
0

以下mwthod是UINavigationController的委託方法。我想成爲會員,決定是否將左側項目添加到每個頁面。下面的代碼不起作用,我做錯了什麼?iOS - UINavigationController並添加一個左欄按鈕?

我不想通過ViewController本身執行此操作。我希望NavigationCopntroller負責此任務。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    UIBarButtonItem *menuItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemOrganize 
                        target:self 
                        action:@selector(menuItemSelected:)]; 
    [self.navigationItem setLeftBarButtonItem:menuItem]; 

    // I also tried 
    // [viewController.navigationItem setLeftBarButtonItem:menuItem]; 
} 

回答

1

在控制檯中有一個警告說「嵌套推可能會損壞導航控制器」 我將2個Viewcontroller推入堆棧,而不是一次推送1個viewController。

解決這個問題並擺脫警告解決了這個問題。

+0

這樣解決了嗎? – 2012-08-08 19:59:00

+0

是的,忘記標記爲答案。 – aryaxt 2012-08-09 03:40:43

1

我覺得現在的問題是,你想進入電影上的viewController的navigationItem屬性,但它不存在,因爲在willShowViewController方法的viewController不在navigationController堆棧的是,嘗試使用該didShowViewController委託方法

像這樣:

- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { 
    UIBarButtonItem *menuItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemOrganize 
                        target:self 
                        action:@selector(menuItemSelected:)]; 
    [self.navigationItem setLeftBarButtonItem:menuItem]; 

    [viewController.navigationItem setLeftBarButtonItem:menuItem]; 

}

+0

我已經試過這個,它給了我相同的結果。 – aryaxt 2012-07-16 16:20:40

相關問題