我正在使用自己的自定义navigationBar,但我需要在许多不同的视图中访问它,因为我需要添加按钮,更改标题等等。
每次我显示新视图时,是否应该将引用传递给我的navigationBar,或者只是将其设为单例,以便我可以从任何视图访问它?
答案 0 :(得分:3)
都不是。
您已经列出了添加按钮和更改标题作为您需要自定义工具栏的原因,但这两件事都可以通过导航控制器完成,无需创建自己的工具,因此无需创建单例或全局变量。
当您按下新的视图控制器时,只需调用[self setTitle:@“Nav Title”]即可设置导航栏的标题;在该视图控制器的-viewDidLoad中。如果您需要添加按钮,请使用以下代码(也在-viewDidLoad中):
[[self navigationItem] setRightBarButtonItem:[[[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemEdit
target:self
action:@selector(setEditing)] autorelease]];
换句话说,如果您出于自己列出的原因创建自定义导航栏,则您的设计存在缺陷。我想有一些很好的理由来创建自定义导航栏,但这些不在其中。
请考虑查看Configuring the Navigation Item Object的View Controller Programming Guide for iPhone OS部分。
致以最诚挚的问候,
答案 1 :(得分:2)
您使用的是UINavigationController吗?如果是这样,您可以从任何子控制器访问导航栏,如下所示:
UINavigationBar *bar = self.navigationController.navigationBar;
答案 2 :(得分:0)
将其设为全局变量。