我在UIViewController
中嵌入了UINavigationController
。 rootViewController
现在已经包含了一些按钮leftBarButtonItems
。
现在,当我在UIViewController
之上推送新的UINavigationController
时,我希望新的UIViewController
保持现有的leftBarButtonItems
与Back
一起扩展 - 按钮。
目前情况如下:当我推送新的UIViewController
时,现有的leftBarButtonItems
消失,只有Back
- 按钮可见。
答案 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];
这可能不是一个很好的方法,但它似乎适用于我的情况。