2009-06-05 73 views
2

我有一個導航控制器,並在它的視圖控制器:UINavigationBar的標題和右按鈕

-NavigationController1 
--MyViewController 

而且還有我還有一個導航控制器 - NavigationController2。 我想從另一個視圖控制器 - ViewController2中調用MyViewController,它被推入NavigationController2。 -NavigationController2 --ViewController2

我這樣做以下列方式:

@implementation ModifyDicVController 

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    self.navigationItem.rightBarButtonItem = [ [ [UIBarButtonItem alloc] 
        initWithBarButtonSystemItem: 
        UIBarButtonSystemItemAdd target:self 
        action:@selector(add_clicked)] autorelease]; 

} 


-(void) add_clicked 
{ 
    [navigationController pushViewController: addWordsVController animated: YES]; 
} 

@end 

這裏是MyViewController(也被稱爲一個)的viewWillAppear中方法:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    [self setTitle: @"My title"]; 
} 

當用戶開始編輯文本字段時,我在導航欄中添加了「完成」按鈕:

- (void) textFieldDidBeginEditing: (UITextField *) textField 
{ 
    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] 
       initWithTitle: NSLocalizedString(@"button: done", @"") 
       style:UIBarButtonItemStyleDone 
       target:self 
       action:@selector(doneEditing)] 
       autorelease]; 
} 

問題是:如果我從ViewController2中調用MyViewController並將其傳入NavigationController2,然後從其自己的NavigationController1調用MyViewController,則不會添加導航欄和完成按鈕的標題。然而,正在調用MyViewController的viewWillAppear和textFieldDidBeginEditing方法。

這是什麼問題,我該如何解決?

謝謝。

+0

你能更詳細地解釋導航控制器的層次結構嗎? – 2009-06-05 20:03:14

回答

1

你的問題有點混亂。

我「認爲」你說你有問題在視圖控制器之間進行通信。

如果是這樣的話,真正的問題是你的視圖控制器不應該相互通信。他們應該將狀態存儲在模型中。

如果你這樣做,那麼你將沒有問題。考慮讓模型單例保存正在丟失的信息。

如果我誤解了你的問題,請告訴我。

0

更改當前位於堆棧頂部的視圖控制器(活動)中的標題用法。

[email protected]"the title";