今天在工作中發現一個坑, 其他頁面都是隱藏。YSViewController 使用的時候必須是需要 navigationBar 和 toorbar,但是 pop出這個viewcontroller后,需要隱藏navigationBar 和 toorbar,但是直接設置為hidden=YES會出現其他頁面壓棧出現問題。
toolbar.hidden=YES 會導致后期壓棧出棧的界面出現異常。
//self.navigationController.navigationBarHidden=YES; [self.navigationController setNavigationBarHidden:YES animated:YES]; //self.navigationController.toolbar.hidden=YES; [self.navigationController setToolbarHidden:YES animated:YES]; [self.navigationController popViewControllerAnimated:YES];
同樣下面一種情況類似:
- (void)viewWillAppear:(BOOL)animated
{[super viewWillAppear:animated];self.navigationController.navigationBarHidden = YES;
}- (void)viewWillDisappear:(BOOL)animated
{[super viewWillDisappear:animated];self.navigationController.navigationBarHidden = NO;
}
這樣寫導致的結果就是當你右滑返回一部分,再回來點擊push到下一個頁面,導航欄會混亂,本來該顯示下一個頁面的標題,結果變成了上一個頁面的標題,如果你在這個頁面進行其他的操作很可能導致崩潰,因為系統還以為是在上一個頁面。
正確的寫法應該是下面這樣。
- (void)viewWillAppear:(BOOL)animated {[self.navigationController setNavigationBarHidden:YES animated:animated];[super viewWillAppear:animated];
}- (void)viewWillDisappear:(BOOL)animated {[self.navigationController setNavigationBarHidden:NO animated:animated];[super viewWillDisappear:animated];
}