我想知道是否可以直接在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中指定方法“设置”
是否可以以共享方式添加此按钮?如何将设置方法定义为共享方法?
答案 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;
}