2011-10-06 197 views
6

我通過庫添加UINavigationBar來查看。我還將UINavigationItem添加到此導航欄中。導航後退按鈕不顯示,如何將後退按鈕添加到UINavigationItem

在viewController.m中,我添加了下面的代碼,但後退按鈕不顯示。

self.navigationItem.title = @"List"; 
self.navigationItem.backBarButtonItem.title = @"Back"; 
+1

你試過'self.navigationItem.hidesBackButton = NO'嗎? – EmptyStack

+0

只是後退按鈕沒有顯示或整個導航欄? – HeikoG

+1

我只是有這個問題,這解決了它對我來說:http://stackoverflow.com/questions/2485671/uinavigationcontroller-back-button-not-visible-but-works – banDedo

回答

2

self.navigationItem.backBarButtonItem將示出的有推只有一個又一個視圖到導航堆棧,由self.navigationController控制,如果顯示導航欄上沒有左鍵。

從蘋果文檔:

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

+0

謝謝你的info.Currently我不使用推送的視圖導航堆棧。我使用addSubView方法從主視圖中調用此視圖。所以如何將bar按鈕項添加到我的navigationItem或如何啓用back bar按鈕項。 –

+0

您應該創建自定義按鈕並將其設置爲'self.navigationItem.leftBarButtonItem'。查看答案@ 516 – Nekto

+0

我試了一下,但還是沒有顯示。 –

2

試試這個代碼,

**To hide your default back button use this,** 



self.navigationItem.hidesBackButton = YES; 

UIImage* image = [UIImage imageNamed:@"back.png"]; 
    CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height); 
    UIButton* backbtn = [[UIButton alloc] initWithFrame:frame]; 
    [backbtn setBackgroundImage:image forState:UIControlStateNormal]; 
    [backbtn setShowsTouchWhenHighlighted:YES]; 
    [backbtn addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem* backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backbtn]; 
    [self.navigationItem setLeftBarButtonItem:backButtonItem]; 
    [backButtonItem release]; 
    [backbtn release]; 

操作事件的後退按鈕:

-(IBAction)goBack{ 
//ur code here 

}

2

試試這個代碼,可能是它的幫助下到U

UIButton *moreButton1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [moreButton1 setImage:[UIImage imageNamed:@"left_arrow.png"] forState:UIControlStateNormal]; 
    //[moreButton setImage:[UIImage imageNamed:@"Button_OtherInfo_Active.png"] forState:UIControlStateHighlighted]; 
    [moreButton1 addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside]; 
    [moreButton1 setFrame:CGRectMake(0, 0, 50,30)]; 
    self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc] initWithCustomView:moreButton1]; 

把這個代碼在viewDidLoad

-(void)backClick 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
} 
0

這是有點老了,但如果有人在尋找一個答案......

後退按鈕會自動顯示,但當前視圖(而不是一個被推送)需要有一個標題。例如:

- (void)viewDidLoad 
{ 
    self.title = @"Home"; 
    [super viewDidLoad]; 
} 

然後,當你推的視圖到圖堆棧

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

返回按鈕顯示出來。無需混淆UINavigationItem或UINavigationBar。使用這些來自定義導航欄。看一下名爲NavBar的示例項目,它是xcode的一部分。

8

試試這個:

self.navigationItem.leftItemsSupplementBackButton = YES; 

如果您定製具有UIBarButtonItems您的導航控制器框架默認情況下刪除後退按鈕,因爲它假設您自定義導航欄。使用該行再次添加後退按鈕。