我有一個UINavigationController和3個簡單控制器鏈。每個人都有一個按鈕。當按下一個按鈕時,下一個控制器被按下。 ViewController1 - > ViewController2 - > ViewController3。當我在第三個視圖上按下後退按鈕時,我想要移至第一個視圖。 backBarButtonItem的使用是強制性的。這裏是第二個控制器代碼:彈出控制器後按下回車鍵按鈕
#import "ViewController2.h"
static BOOL isBackButtonPressed;
@implementation ViewController2
- (void)viewDidLoad {
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"back from 3" style:UIBarButtonItemStyleBordered target:nil action:nil];
[super viewDidLoad];
}
- (void)viewWillAppear:(BOOL)animated {
if (isBackButtonPressed) {
[self.navigationController popViewControllerAnimated:YES];
} else {
isBackButtonPressed = YES;
}
[super viewWillAppear:animated];
}
@end
但是當我按後退按鈕在第三視圖我回到第二視圖,而不是第一個視圖。你能幫我回到第三個視圖的第一個視圖按下按鈕嗎? 我嘗試了答案的建議,但他們沒有幫助。
- 添加一個選擇器到backBarButtonItem沒有幫助,因爲它永遠不會被調用。
- 在viewWillDisappear方法中添加[self.navigationController popToRootViewControllerAnimated:YES]也不起作用。我不知道爲什麼。我認爲實際的問題是backBarButtonItem是如何工作的。 還有其他建議嗎?
我嘗試實現的行爲存在於iPhone上的日曆中。當您將iPhone旋轉到橫向時,您可以進入weeek視圖。然後轉到活動詳情,然後旋轉到肖像。當您按下返回按鈕時,您將進入一個日視圖而不是一個星期視圖,因此帶有周視圖的控制器將被跳過。
只是在代碼中出現問題時,您會忘記調用'supper',如[super viewDidLoad]和'[super viewDidLoad:animated]'。 – rckoenes
我編輯了我的代碼,但這對行爲無關緊要。 – PSsam