我正在開發iPhone應用程序。應用程序頂部有一個導航欄。我有兩個視圖說「視圖1」和「視圖2」。當您按「View2」視圖控制器時,導航欄會顯示一個帶有「View1」標題的後退按鈕,以便您可以返回到view1。導航後退按鈕在iPhone應用程序中的事件事件
現在我的問題是當你點擊那個按鈕時會觸發哪個事件?也有可能改變導航欄中後退按鈕的文本?
任何幫助將不勝感激?
謝謝
我正在開發iPhone應用程序。應用程序頂部有一個導航欄。我有兩個視圖說「視圖1」和「視圖2」。當您按「View2」視圖控制器時,導航欄會顯示一個帶有「View1」標題的後退按鈕,以便您可以返回到view1。導航後退按鈕在iPhone應用程序中的事件事件
現在我的問題是當你點擊那個按鈕時會觸發哪個事件?也有可能改變導航欄中後退按鈕的文本?
任何幫助將不勝感激?
謝謝
沒有具體的事件,你可以得到只是爲了後退按鈕。您可以改用各種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];
我正在使用此解決方案用於鉤子彈出視圖控制器。
// In some view controller
- (void) viewDidDisappear:(BOOL)animated
{
if (self.navigationController == nil) {
// popped from navigation stack.
// do something...
}
}
不過,這並不鉤如果視圖控制器彈出,推過自將調用popToViewController:動畫:具有低於自控制器在堆或popToRootViewController:動畫: