1
我有兩個視圖控制器 - 一個UIViewController
和一個UITableViewController
。iOS - 在視圖控制器之間共享代碼
它們都需要相同的代碼barButtonItems
- 完成按鈕和設置按鈕。我認爲這是醜陋的方法選擇器和viewDidLoad
相同的代碼,但我想不出任何其他方式具有相同的barButtonItems
兩個控制器。
共享代碼如下所示:
- (void)dismissViewController { [self.navigationController dismissViewControllerAnimated:YES completion:nil]; }
- (void)done:(UIBarButtonItem *)sender { [self dismissViewController]; }
- (void)settings:(UIBarButtonItem *)sender { [self performSegueWithIdentifier:SETTINGS_SEGUE sender:sender]; }
- (void)viewDidLoad {
[super viewDidLoad];
if (self.navigationController.viewControllers.count == 1)
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered target:self action:@selector(settings:)];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done:)];
}
架構上,我的代碼是這樣的:
UITabBarController -view controllers->
UINavigationController -root view controller-> UIViewController
UINavigationController -root view controller-> UITableViewController
那麼,有沒有共享UIViewController
和UITableViewController
之間的代碼的方法嗎?謝謝:)
謝謝!從來沒有嘗試過在靜態方法中使用'target:self',我會嘗試。 – s12chung 2013-02-11 22:06:15
o,不是自我,原因是你傳遞自我,或self.navigationItem作爲參數的方法。 – AlexWien 2013-02-11 22:11:14