2012-07-16 76 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

相关问题