当this question [有点]询问时,如何在我的MainWindow.xib
中设置一些工具栏项,并在我使用UINavigationController
pushViewController:animated:
时显示这些项目。< / p>
例如,我的应用程序有:
MainWindow.xib
,其中包含带导航栏和工具栏的UINavigationController
。AViewController.xib
,其中只包含UITableView
。在某些时候,我们的用户按下工具栏按钮,相关的操作执行:
- (void)someAction {
[self.navigationController pushViewController:[[AViewController alloc]
initWithNibName:nil bundle:nil]
animated:YES];
}
当推送新视图时,它包含一个空白工具栏,而不是包含与之前相同项目的工具栏。保持它们相同的首选方法是什么?我觉得我只是错过了一些简单的东西!提前谢谢!
答案 0 :(得分:2)
我希望其中一个类采用UINavigationControllerDelegate
协议并实现navigationController:willShowViewController:animated:
这样的方法,
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
[viewController setToolbarItems:toolbarItems animated:NO];
}
我在委托类中创建并存储toolbarItems
。作为委托的可能候选者之一是应用程序委托类,因为它是最可能实例化导航控制器的地方。
答案 1 :(得分:0)
我最终切换到了Deepak的答案,但我也认为如果有人帮助(或者如果有人想提供反馈),我会提供这个。
在我上面定义的showAction
方法中,我重构了它:
- (void)someAction {
AViewController *av = [[AViewController alloc]
initWithNibName:nil bundle:nil];
[av setToolbarItems:[[self.navigationController toolbar] items]];
[self.navigationController pushViewController:av animated:YES];
}