1

我正在使用自己的自定义导航栏,但我需要在许多不同的视图中访问它,因为我需要添加按钮、更改标题等。

每次我显示一个新视图时,我是否应该传递对我的导航栏的引用,或者只是将其设为单例,以便我可以从任何视图访问它?

4

3 回答 3

3

两者都不。

您已经列出了添加按钮和更改标题作为您需要自定义工具栏的原因,但是这两件事都可以通过导航控制器完成,无需创建您自己的,因此无需创建单例或全局变量。

当你推送一个新的视图控制器时,你可以简单地通过调用 [self setTitle:@"Nav Title"]; 来设置导航栏的标题。在该视图控制器的 -viewDidLoad 中。如果您需要添加按钮,请使用如下代码(也在 -viewDidLoad 中):

[[self navigationItem] setRightBarButtonItem:[[[UIBarButtonItem alloc]
        initWithBarButtonSystemItem:UIBarButtonSystemItemEdit 
                             target:self 
                             action:@selector(setEditing)] autorelease]];

换句话说,如果您仅出于列出的原因创建自定义导航栏,那么您的设计就有缺陷。我想创建自定义导航栏有一些很好的理由,但这些都不在其中。

考虑查看iPhone OS 视图控制器编程指南的配置导航项对象部分。

最好的祝福,

于 2009-10-27T15:49:37.733 回答
2

你在使用 UINavigationController 吗?如果是这样,您可以从任何子控制器访问导航栏,如下所示:

UINavigationBar *bar = self.navigationController.navigationBar;
于 2009-10-27T15:28:12.503 回答
0

使其成为全局变量。

于 2009-10-27T14:28:56.600 回答