0

我有一个UIViewController嵌入在UINavigationController. 现在rootViewController已经包含一些按钮,如leftBarButtonItems.

UIViewController现在,当我在顶部推送一个新的时,UINavigationController我希望新的使用-ButtonUIViewController保持现有的leftBarButtonItems扩展。Back

现在情况如下:当我按下新按钮时UIViewController,现有按钮leftBarButtonItems消失,只有Back-Button 可见。

4

2 回答 2

1

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

基本上,您必须在加载时将按钮添加到每个视图控制器的 navigationItem。您可以通过编写向 UIViewControllers 以外的类添加执行此工作的方法来简化此操作。但是,当您触摸每个按钮时会发生什么可能是特定于视图控制器的,因此您必须考虑如何将触摸动作反馈给相关的视图控制器。也许引入某种 NavigationBarDelegate 协议之类的?

于 2012-07-19T13:06:09.660 回答
0

当将同一视图控制器的多个实例推送到我认为会类似工作的细节视图控制器时,我发现似乎是一种解决此问题的 hacky 方法。在推送新的视图控制器之前,我使用了这个:(浏览器是我的新视图控制器)

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

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

于 2012-07-20T01:58:59.840 回答