我正在使用自己的自定义导航栏,但我需要在许多不同的视图中访问它,因为我需要添加按钮、更改标题等。
每次我显示一个新视图时,我是否应该传递对我的导航栏的引用,或者只是将其设为单例,以便我可以从任何视图访问它?
我正在使用自己的自定义导航栏,但我需要在许多不同的视图中访问它,因为我需要添加按钮、更改标题等。
每次我显示一个新视图时,我是否应该传递对我的导航栏的引用,或者只是将其设为单例,以便我可以从任何视图访问它?
两者都不。
您已经列出了添加按钮和更改标题作为您需要自定义工具栏的原因,但是这两件事都可以通过导航控制器完成,无需创建您自己的,因此无需创建单例或全局变量。
当你推送一个新的视图控制器时,你可以简单地通过调用 [self setTitle:@"Nav Title"]; 来设置导航栏的标题。在该视图控制器的 -viewDidLoad 中。如果您需要添加按钮,请使用如下代码(也在 -viewDidLoad 中):
[[self navigationItem] setRightBarButtonItem:[[[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemEdit
target:self
action:@selector(setEditing)] autorelease]];
换句话说,如果您仅出于列出的原因创建自定义导航栏,那么您的设计就有缺陷。我想创建自定义导航栏有一些很好的理由,但这些都不在其中。
考虑查看iPhone OS 视图控制器编程指南的配置导航项对象部分。
最好的祝福,
你在使用 UINavigationController 吗?如果是这样,您可以从任何子控制器访问导航栏,如下所示:
UINavigationBar *bar = self.navigationController.navigationBar;
使其成为全局变量。