0

在視圖中,我想更改它,因爲我有以下代碼但失敗。如何更改UINavigationControler上的後退按鈕

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    //Logout button 
    UIBarButtonItem * logout = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(goBack)]; 
    logout.title = @"Logout"; 
    nav_delegate.navigationController.navigationItem.leftBarButtonItem = logout; 
    [logout release]; 
} 

謝謝你的幫助。

回答

1

答案如下。在視圖控制器:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.title = @"X"; 
    //Logout button 
    UIBarButtonItem * logout = [[UIBarButtonItem alloc] initWithTitle:@"Logout" style: UIBarButtonItemStylePlain target:self action:@selector(goBack)]; 
    self.navigationItem.leftBarButtonItem = logout; 
    [logout release]; 
} 
1

在前一個視圖控制器上設置backBarButtonItem(當您按下後退按鈕時將返回到此視圖控制器)。

+0

我在前面的視圖控制器的viewDidLoad方法上添加了代碼,但仍然失敗。我確定我用自己替換了nav_delegate.navigationController。不管怎樣,謝謝你。 – 2010-11-03 23:15:16

+0

也用backBarButtonItem – 2010-11-03 23:17:02

+0

我不確定你在編碼,但也許一個模式視圖控制器會更好地適應它。當我想到「取消」時,我想到了模態視圖控制器而不是導航控制器。 – 2010-11-03 23:22:58

3

實施backBarButtonItem是針對使用pushViewController超級視圖控制器:subViewController。

舉例來說,如果你推一個視圖控制器其超視圖控制器註銷:

[self.navigationController pushViewController:subViewController animated:YES]; 

然後,你應該已經實現backBarButtonItem在超看來,這是退出來看,在不推送的subViewController

因此,實現backBarButtonItem,你做超視圖註銷,如: - (無效)viewDidLoad中靜態使用,或者 -

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:logoutViewTitle style:UIBarButtonItemStyleBordered target:nil action:nil]; 

你可以做到這一點(無效)viewWillAppear中:(布爾)爲動態使用動畫,設置標題沒有分配和初始化。

另一個提示:在界面生成器中,有backBarButtonItem標題的輸入字段。但是,如果你沒有輸入,你必須在.m文件中分配和初始化backBarButton標題,就像上面的代碼一樣。如果你已經輸入了靜態使用標題,我相信你可以簡單地使用它來改變它:

[self.navigationItem.backBarButtonItem setTitle:logoutViewTitle]; 

希望它有幫助。

+0

謝謝你的回答。我想我明白了你的意思,但是改變UINavigationController中的屬性從未奏效。在UIView推送中修改它時,它完美地工作。 – 2010-11-04 17:36:46