2013-02-11 60 views
1

我有兩個視圖控制器 - 一個UIViewController和一個UITableViewControlleriOS - 在視圖控制器之間共享代碼

它們都需要相同的代碼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 

那麼,有沒有共享UIViewControllerUITableViewController之間的代碼的方法嗎?謝謝:)

回答

0

如果你真正想要的,你可以在那裏你在navigationItem通過創建一個靜態方法initNavigationBar

+ (void) initNavigationBar: (UiNavigationItem *) navigationItem 
{ 
     navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
     initWithTitle:@"Settings" style:UIBarButtonItemStyleBordered 
     target:selfaction:@selector(settings:)]; 

     navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] 

} 

但是三思而後行。

+0

謝謝!從來沒有嘗試過在靜態方法中使用'target:self',我會嘗試。 – s12chung 2013-02-11 22:06:15

+0

o,不是自我,原因是你傳遞自我,或self.navigationItem作爲參數的方法。 – AlexWien 2013-02-11 22:11:14

相關問題