2011-11-24 45 views
3

對於我的一個視圖控制器(擴展UITableViewController),我需要將其後退按鈕文本配置爲「返回」。但後退按鈕仍然顯示與父視圖控制器的標題(默認)。返回按鈕文字不變

- (void)viewDidLoad 
{ 
    ... 
    self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease]; 
} 

回答

3

您需要在視圖控制器上設置將類推入堆棧的返回按鈕,例如創建並推送您正在顯示的課程的控制器

View Controller Programming Guide for iOS的文檔建議將UINavigationItem保存在Navigation Item Stack中,該文檔爲堆棧上的當前項提供標題和按鈕。

重要(I加入[]比特)

雖然大多數導航欄的內容被從最上層的導航項目獲得的[在導航堆棧],一個指向後面項[的在堆棧中的前一個項目]被維護,以便可以創建後退按鈕(帶有前一項目的標題)。

綜觀下Configuring the Navigation Item Object部分的文檔有一個示意圖,它表示棧和backItem指向在堆棧頂部項目下方的項。在你的情況下,堆棧中的頂級項目將指向你正在顯示的類的UINavigationItem,而backItem將是一個指向推送它的類的指針。

NB
看的文檔該部分的圖像勝過千言萬語

3

試試這個:

UIButton* backButton = [UIButton buttonWithType:101]; 
[backButton addTarget:self action:@selector(popView:) forControlEvents:UIControlEventTouchUpInside]; 
[backButton setTitle:@"Back" forState:UIControlStateNormal]; 

UIBarButtonItem* backItem = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 
self.navigationItem.leftBarButtonItem = backItem; 
self.navigationItem.backBarButtonItem.enabled = NO; 
self.navigationItem.leftBarButtonItem.enabled = YES; 
[backButton release]; 

你需要實現一個簡單的方法popView,像這樣:

-(IBAction)popView:(id)sender 
{ 
    [self.navigationController popViewControllerAnimated:NO]; 
} 
0

以下是來自最新的UINavigationController cla的更多信息ss參考,它告訴你如何改變「推」或「推」控制器中的按鈕(我會添加鏈接,但Apple會以微妙的方式不斷移動東西。請使用您最喜愛的搜索引擎)。

總結:如果您正在配置後推按鈕(即上一個)控制器,則訪問backBarButtonItem。無論下一個控制器的類型如何,這都非常適合配置一致命名的後退按鈕。如果你想/需要在推送(即當前)控制器中改變它,你需要訪問leftBarButtonItem。

相關的文字是在這裏:在導航欄左側

酒吧按鈕項目允許 導航回導航 堆棧上的一個視圖控制器。導航控制器更新 導航欄的左側,如下所示:

如果新的頂級視圖控制器具有自定義左欄按鈕項目,則會顯示該項目。要指定自定義左欄按鈕 項目,請設置視圖控制器的 導航項目的leftBarButtonItem屬性。

如果頂層視圖控制器不具有自定義左側欄按鈕項目,但以前的視圖控制器 的導航項目在其backBarButtonItem財產有效的項目,在導航欄 顯示該項目。

如果未通過任一視圖控制器的指定的自定義欄按鈕項,缺省的回按鈕用於和它的標題被設置爲前一視圖的標題屬性的 值控制器,也就是說, 的視圖控制器在堆疊上向下一級。 (如果導航堆棧上只有一個 視圖控制器,則不顯示後退按鈕。)