2010-06-04 78 views
2

我正在開發iPhone應用程序。應用程序頂部有一個導航欄。我有兩個視圖說「視圖1」和「視圖2」。當您按「View2」視圖控制器時,導航欄會顯示一個帶有「View1」標題的後退按鈕,以便您可以返回到view1。導航後退按鈕在iPhone應用程序中的事件事件

現在我的問題是當你點擊那個按鈕時會觸發哪個事件?也有可能改變導航欄中後退按鈕的文本?

任何幫助將不勝感激?

謝謝

回答

5

沒有具體的事件,你可以得到只是爲了後退按鈕。您可以改用各種viewWillAppear:,viewWillDisappear:等方法。例如:

//In View2: 
- (void) viewWillDisappear:(BOOL) animated { 
    [super viewWillDisappear:animated]; 
    if (!goingToSubscreen) { 
     //Do something important here 
    } 
    goingToSubscreen = NO; 
} 

//In View1: 
- (void) viewWillAppear:(BOOL) animated { 
    [super viewWillAppear:animated]; 
    if (wentToSubscreen) { 
     //Do something important here 
    } 
    wentToSubscreen = NO; 
} 

請注意,布爾值goSoScreen和goingToSubscreen應設置爲named。如果您將另一個視圖推到View2之上的導航控制器上,則應該將goingToSubscreen設置爲YES,以便它不執行重要的操作。相反,您應該在按View2後將ViewToSubscreen上的wentToSubscreen設置爲YES,以便當它再次出現時,它從該屏幕返回後會發生一些有趣的事情,而不是當View1最初出現時。

編輯: 作爲的iOS 5.0的,我相信都內置了這個特性。在按下後退按鈕的情況下,在viewWillDisappear:viewDidDisappear:期間,isBeingDismissed設置爲YES。作爲參考,您可以檢查的屬性是:

isMovingFromParentViewController 
isMovingToParentViewController 
isBeingPresented 
isBeingDismissed 

至於改變後退按鈕的名稱,屬性屬於一個視圖的後退按鈕項:

View1.navigationItem.backBarButtonItem.title = @"My New Title"; 

或:

View1.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleBordered target:nil action:nil] autorelease]; 

您的第三個選擇是使用自定義按鈕替換後退按鈕。它會讓你指定你自己的方法來調用,所以你不需要使用-viewWillDisappear:,但這樣做會將按鈕顯示爲矩形而不是後退箭頭按鈕。此按鈕繼續View2而不是View1:

View2.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"New Title" style:UIBarButtonItemStyleDone target:self action:@selector(dismissView)] autorelease]; 
0

我正在使用此解決方案用於鉤子彈出視圖控制器。

// In some view controller 
- (void) viewDidDisappear:(BOOL)animated 
{ 
    if (self.navigationController == nil) { 
     // popped from navigation stack. 
     // do something... 
    } 
} 

不過,這並不鉤如果視圖控制器彈出,推過自將調用popToViewController:動畫:具有低於自控制器在堆或popToRootViewController:動畫: