如何在UINavigationController中为所有viewControllers添加UiBarButtonItem

时间:2011-01-04 15:10:54

标签: cocoa-touch ios uinavigationcontroller

我想知道是否可以直接在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中指定方法“设置”

是否可以以共享方式添加此按钮?如何将设置方法定义为共享方法?

2 个答案:

答案 0 :(得分:1)

实现此目的的一种方法是拥有UIViewController派生的父类。在父类中,您可以设置按钮,例如viewDidLoad。在您的子课程中,您可以使用[super viewDidLoad];方法viewDidLoad进行操作。

希望这有帮助!

答案 1 :(得分:1)

成为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;
}