如何在 UINavigationController 中为所有视图控制器添加 UiBarButtonItem
Posted
技术标签:
【中文标题】如何在 UINavigationController 中为所有视图控制器添加 UiBarButtonItem【英文标题】:How to add a UiBarButtonItem in UINavigationController for all viewControllers 【发布时间】:2011-01-04 15:10:54 【问题描述】:我想知道是否可以将按钮直接添加到navigation controller
,或者我必须将所有viewController
中的按钮添加到navigation Controller
?
示例:我有 3 个UIViewController
(VC1、VC2 和 VC3),我可以将这些元素推送到 NavigationController (NC) 中。如果我需要添加一个按钮作为 VC1 的右侧导航项,我可以写在 VC1 的 viewDidLoad
中:
UIBarButtonItem *settingsBtn = [[UIBarButtonItem alloc]initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:self action:@selector(settings)];
self.navigationItem.rightBarButtonItem = settingsBtn;
如果我也需要 NC 上的此按钮用于 VC2 和 VC3,我必须在 VC2 和 VC3 中添加此代码,并在 VC1、VC2 和 VC3 中指定方法“设置”
是否可以以共享方式添加此按钮?以及如何将设置方法定义为共享方法?
【问题讨论】:
【参考方案1】:做到这一点的一种方法是拥有一个您的UIViewController
s 派生自的父类。在父类中,您可以将按钮设置为viewDidLoad
。在您的儿童课程中,您可以在 viewDidLoad
方法中执行 [super viewDidLoad];
。
希望这会有所帮助!
【讨论】:
是的,这是一个快速且面向对象的解决方案 :) 我会为您带来 900 声望点:P 再次感谢 donkim! 很高兴为您提供帮助!我从这个社区学到了很多东西,很高兴能回馈社会。 :)【参考方案2】:成为 UINavigationController 的代表。
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
UIBarButtonItem *settingsBtn = [[UIBarButtonItem alloc]initWithTitle:@"Settings"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(settings)];
viewController.navigationItem.rightBarButtonItem = settingsBtn;
【讨论】:
以上是关于如何在 UINavigationController 中为所有视图控制器添加 UiBarButtonItem的主要内容,如果未能解决你的问题,请参考以下文章
在 UINavigationController 中设置时图像不显示
将 managedObjectContext 发送到 viewController 崩溃
ID:[...] 的 NSManagedObject 已失效
使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?