2011-03-08 84 views
3

我想要一個導航欄有一個後退按鈕,它會轉到最後一頁,即使最後一頁沒有導航欄。我怎樣才能插入一個後退按鈕,並控制用戶按下它時會發生什麼?如何手動添加'後退'按鈕到UINavigationBar?

+0

取決於'last'頁面的含義。 – occulus 2011-03-08 01:14:57

+0

我想他是指前一頁。 – florian 2011-03-08 01:17:39

回答

0

您需要將按鈕從Interface Builder鏈接到您想要在按鈕被點擊時調用的方法。該方法應該看起來像這樣- (IBAction)backAction。該方法的名稱取決於您,但您必須將返回類型聲明爲IBAction,以便「接口」構建器知道可以將按鈕鏈接到它。

0

導航欄不需要由導航控制器管理的視圖控制器。而不是試圖僞造後退按鈕,使用導航控制器來管理兩個視圖控制器,並讓第一個控制器隱藏導航欄。例如,您可以添加如下內容:

[self.navigationController setNavigationBarHidden:YES animated:YES]; 

到控制器的-viewDidAppear方法。爲第二個控制器做類似的事情,爲隱藏參數傳入NO以便再次顯示。

在一般情況下,雖然,一個視圖控制器可以添加一個返回按鈕,導航欄有這樣的代碼(警告:從內存類型未經測試的代碼,但應該讓你開始):

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:myBackImage style: UIBarButtonItemStylePlain target:self action:someAction]; 
self.navigationItem.backBarButtonItem = backButton; 
[backButton release]; 

當輕擊按鈕時,按鈕會將其動作(someAction)發送到其目標(自我)。

+0

儘管兩個視圖都在相同的視圖控制器中。 – Andrew 2011-03-08 01:29:08

+0

你知道這不是框架的使用方式,對吧?如果你想要根據你的應用程序的設計走自己的方向,這取決於你 - 我向你展示瞭如何在導航項目中設置你自己的按鈕,而且這應該工作。但Cocoa Touch強烈期待每個視圖控制器管理一個「屏幕」。除非有其他重要的理由,否則無視這一慣例會讓自己陷入一個不必要的痛苦世界。 – Caleb 2011-03-08 02:00:13

+0

@Caleb - 任何人都可以閱讀這篇文章,這不是約定 – Sam 2011-09-09 15:05:42

-2
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

[button addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; 

[button.titleLabel setFont:[UIFont boldSystemFontOfSize:11.0]]; 

[button setBackgroundImage:[UIImage imageNamed:@"back_norm.png"] forState:UIControlStateNormal]; 

[button setBackgroundImage:[UIImage imageNamed:@"back_click.png"] forState:UIControlStateSelected]; 

[button setBackgroundImage:[UIImage imageNamed:@"back_click.png"] forState:UIControlStateHighlighted]; 

[button setTitle:@" Back" forState:UIControlStateNormal]; 

[button setTitle:@" Back" forState:UIControlStateSelected]; 

[button setTitle:@" Back" forState:UIControlStateHighlighted]; 

button.frame = CGRectMake(0, 0, 48, 30); 

UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithCustomView:button]; 

self.navigationItem.leftBarButtonItem = back; 

[button release]; 

[back release]; 
+1

請考慮對您的代碼進行評論 – user1211929 2012-11-21 11:10:02

相關問題