为 UINavigationController 设置默认的 rightBarButtonItem

Posted

技术标签:

【中文标题】为 UINavigationController 设置默认的 rightBarButtonItem【英文标题】:Set default rightBarButtonItem for UINavigationController 【发布时间】:2012-08-28 22:17:23 【问题描述】:

伙计们,

我有一个 tabBarController,每个选项卡上都有一个 navigationController。

我想设置导航栏的默认右栏按钮,这样我就不必在 3 个不同的视图控制器上编写相同的代码。

我试过[[UINavigationBar appearance] setRightBarButtonItem:myButton];

但没有成功,是说: -[_UIAppearance setRightBarButtonItem:]: unrecognized selector sent to instance

然后我尝试创建自己的 UINavigationController 子类,以便可以将按钮设置为: self.navigationItem.rightBarButtonItem = myButton 但还是没有成功,似乎什么也没发生,可能是因为我此时没有 navigationItem。

有人有其他解决方案吗?

【问题讨论】:

你不能那样做。它根本不是外观的一部分。如果您有结构上通用的元素,请创建一个通用的 UIViewController 子类来设置右栏按钮项,然后创建其他三个作为该子类的子类。 【参考方案1】:

如果你继承自UIViewController,你可以像这样设置右键

UIBarButtonItem * rightButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"foobar.png"] style:UIBarButtonItemStylePlain target:self action:@selector(myAction)];
self.navigationItem.rightBarButtonItem = rightButton;
[rightButton release];

【讨论】:

以上是关于为 UINavigationController 设置默认的 rightBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 在 UINavigationController 中将 UIViewController 显示为全屏

无法将 LaunchViewController 转换为 UINavigationController

将背景设置为透明后的iOS UINavigationController显示黑屏

为 UINavigationController 设置默认的 rightBarButtonItem

UINavigationController 和 titleView

IBM Worklight - 是不是可以将 UINavigationController 添加为起始本机页面?