我最近已經解決了這個,我發現,這是需要調用setNavigationBarHidden:NO
pushViewController:
和setNavigationBarHidden:YES
後立即popViewController:
後,在每次調用動畫YES。
所以,當推:
[nc pushViewController:classBView animated:YES]
[nc setNavigationBarHidden:NO animated:YES]
和彈出時:
[nc popViewControllerAnimated:YES]
[nc setNavigationBarHidden:YES animated:YES]
但在我的情況下,而我所能做的如上推,我不想改變我的類B,而是希望它不知道導航欄以前沒有隱藏(因爲它不是我的代碼)。此外,使用普通的「後退」按鈕彈出該視圖,但沒有明確調用popViewControllerAnimated:
。在我的代碼中最好的工作是讓我的類A成爲UINavigationController
委託,並在發生彈出時將工具欄隱藏在委託方法調用中。
不幸的是我發現UINavigationControllerDelegate
方法是不是太有幫助,willShowViewController
& didShowViewController
推我B類角度還是從另外一個,它已經彈出推回它時,當被稱爲無差別。
我在 https://stackoverflow.com/questions/642312/中關於覆蓋UINavigationController
的建議,我做了一些自定義的委託方法,其中一個在[super popViewControllerAnimated:]
之後被調用。我的子類可在https://gist.github.com/jpmhouston/6118713和委託方法是:
- (void)navigationController:(UINavigationController *)navigationController isPoppingViewController:(UIViewController *)poppedViewController backTo:(UIViewController *)revealedViewController {
if (revealedViewController == self && [poppedViewController isKindOfClass:[MyClassB class]]) {
[navigationController setNavigationBarHidden:YES animated:YES];
// ...and more code to run only when going from class B back to class A
}
}
我敢肯定有更簡單的方法有setNavigationBarHidden:
稱爲繼按下後退按鈕,但這個工作對我來說。
[self.navigationController setNavigationBarHidden:NO];也可以在viewWillAppear中設置此行。 – 2012-10-23 10:12:20
你想要顯示哪種顏色? – TheTiger