【发布时间】:2009-10-27 14:28:01
【问题描述】:
我正在使用自己的自定义导航栏,但我需要在许多不同的视图中访问它,因为我需要添加按钮、更改标题等。
我应该在每次显示新视图时传递对我的导航栏的引用,还是只将其设为单例以便我可以从任何视图访问它?
【问题讨论】:
标签: iphone singleton uinavigationbar
我正在使用自己的自定义导航栏,但我需要在许多不同的视图中访问它,因为我需要添加按钮、更改标题等。
我应该在每次显示新视图时传递对我的导航栏的引用,还是只将其设为单例以便我可以从任何视图访问它?
【问题讨论】:
标签: iphone singleton uinavigationbar
都没有。
您已将添加按钮和更改标题列为您需要自定义工具栏的原因,但这两件事都可以通过导航控制器完成,无需创建您自己的,因此无需创建单例或全局变量。
当你推送一个新的视图控制器时,你可以简单地通过调用 [self setTitle:@"Nav Title"]; 来设置导航栏的标题。在该视图控制器的 -viewDidLoad 中。如果需要添加按钮,请使用如下代码(也在 -viewDidLoad 中):
[[self navigationItem] setRightBarButtonItem:[[[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemEdit
target:self
action:@selector(setEditing)] autorelease]];
换句话说,如果您仅出于列出的原因创建自定义导航栏,那么您的设计就有缺陷。我想创建自定义导航栏有一些很好的理由,但这些都不在其中。
考虑查看View Controller Programming Guide for iPhone OS 的Configuring the Navigation Item Object 部分。
最好的问候,
【讨论】:
你在使用 UINavigationController 吗?如果是这样,您可以像这样从任何子控制器访问导航栏:
UINavigationBar *bar = self.navigationController.navigationBar;
【讨论】:
将其设为全局变量。
【讨论】: