推送时将leftBarButtonItems保留在新的UIViewcontroller上

时间:2012-07-19 12:41:53

标签: cocoa ios5 uiviewcontroller uinavigationcontroller uinavigationbar

我在UIViewController中嵌入了UINavigationControllerrootViewController现在已经包含了一些按钮leftBarButtonItems

现在,当我在UIViewController之上推送新的UINavigationController时,我希望新的UIViewController保持现有的leftBarButtonItemsBack一起扩展 - 按钮。

目前情况如下:当我推送新的UIViewController时,现有的leftBarButtonItems消失,只有Back - 按钮可见。

2 个答案:

答案 0 :(得分:1)

每个UIViewController都有自己的“navigationItem”属性,该属性充当该视图控制器的导航栏表示。当您向特定UIViewController的navigationItem添加按钮时,它们的范围受限于添加它们的viewcontroller,并且它们不会持久存储到其他视图控制器中。

基本上,您必须在加载时将按钮添加到每个viewcontroller的navigationItem。您可以通过向UIViewControllers之外的类添加一个方法来完成此工作,从而简化这一过程。触摸每个按钮时会发生什么,但可能是viewcontroller特定的,因此您必须考虑如何将触摸操作反馈给相关的viewcontroller。也许介绍某种NavigationBarDelegate协议还是什么?

答案 1 :(得分:0)

当我将相同视图控制器的多个实例推送到详细视图控制器时,我发现看起来像是一种愚蠢的方法来解决这个问题。在推送新视图控制器之前,我使用了这个:(浏览器是我的新视图控制器)

   self.browser.navigationItem setLeftBarButtonItem:self.detailViewController.navigationItem.leftBarButtonItem animated:YES]; // Sets popover view controller button.
   [self.detailViewController.navigationController pushViewController:self.browser animated:YES];

这可能不是一个很好的方法,但它似乎适用于我的情况。