2011-07-17 150 views
18

我在UINavigationBar中刪除了UIInterfaceBuilder。我以模態方式呈現此視圖,只想要UIBackBarButton返回到我的最後一個視圖。我有一個插座和財產,這個UINavigationBar宣佈。我想在我的viewDidLoad方法,我可以創建一個UIBackButton這樣的:以編程方式向UINavigationBar添加UIBarButtonItem

UIBarButtonItem *backButton = 
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered 
               target:self 
               action:@selector(goBack)]; 
self.navigationItem.backBarButtonItem = backButton; 
[backButton release]; 

,但我沒有看到我的UIBackBarButtonItemUINavigationBar。我認爲我在這裏做錯了事,因爲我不認爲我的UINavigationBar知道我正試圖以這種方式將此UIBackBarButtonItem添加到它。我需要創建一個NSArray,將其中的按鈕,併爲NavigationBar的setItems呢?

我很困惑navigationItem屬性如何工作與UINavigationBar以及setItems。任何幫助,將不勝感激。謝謝!

回答

15

您正試圖在不添加backBarButtonItem的模式視圖中設置後退按鈕項。這是什麼導致按鈕(或任何形式的後退按鈕)不顯示。 backBarButtonItem主要用於推送視圖控制器,當您推送新的視圖控制器(頂層項目)時,該視圖控制器具有從父項(後面的項目)添加的後退按鈕。所述Apple UINavigationItem Documentation說:

當此項目是導航的背面項杆時它低於下一項的頂部項目 - 它可以被表示爲導航欄上的後退按鈕。使用此屬性來指定後退按鈕。您設定的背面按鈕項目的目標和動作應爲零。默認值是顯示導航項目標題的欄按鈕項目。

爲了得到後退按鈕左側喜歡你願意的話,嘗試從視圖控制器改變

self.navigationItem.backBarButtonItem = backButton; 

self.navigationItem.leftBarButtonItem = backButton; 
12

撥打電話如本

{ 
    NextViewController* vcRootView = [[NextViewController alloc] initWithNibName:@"NextView" bundle:[NSBundle mainBundle]]; 
    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:vcRootView]; 
    [vcRootView release]; 

    [self.navigationController presentModalViewController:navController animated:YES]; 
    [navController release];  

} 

將作爲模態視圖呈現NextViewController lling視圖和NextViewController將爲它提供一個navigationController。

在NextViewController執行文件中的所有你需要的是這個

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self 
                    action:@selector(barButtonBackPressed:)]; 
    self.navigationItem.leftBarButtonItem = backButton; 
    [backButton release]; 
} 


-(void)barButtonBackPressed:(id)sender{ 
    [self dismissModalViewControllerAnimated:YES]; 
} 

有後退按鈕以關閉modalview。希望能幫助到你。

8

使用下面的代碼片段:

//Add button to NavigationController 
UIBarButtonItem *backButton = 
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@「back」, @"") 
            style:UIBarButtonItemStylePlain 
           target:self 
           action:@selector(goBack)]; 

self.navigationItem.leftBarButtonItem = backButton; 

//Perform action on back Button 
- (void) goBack { // Go back task over-here 
} 

不同風格可用的類型有:

UIBarButtonItemStylePlain, UIBarButtonItemStyleBordered, UIBarButtonItemStyleDone 
+0

爲什麼做這樣的...當有一個開箱即用的系統按鈕時? –

+0

@GabrielTomitsuka:你的意思可以更詳細一些嗎? –

+0

已經有一個蘋果設計的功能來做到這一點;創建一個新類型的UIBarButtonItem是不必要的。 –

3

你可以使用這個設定裝置沒有創造新的UIBarButtonItem:

[self.navigationItem.leftBarButtonItem setAction:@selector(doBackButton:)]; 
[self.navigationItem.leftBarButtonItem setTarget:self]; 
相關問題