2010-12-07 38 views
3

我很難過。我正在使用一個UINavigationController,並在一個視圖上試圖隱藏後退按鈕。但是當我這樣做時,它也隱藏了下一級視圖的後退按鈕。iPhone - UINavigationItem - 隱藏返回按鈕

- (void)viewWillAppear:(BOOL)animated我:

[self.navigationItem setHidesBackButton:YES animated:NO]; 

而在- (void)viewWillDisappear:(BOOL)animated我:

[self.navigationItem setHidesBackButton:NO animated:NO]; 

這只是讓後退按鈕出現在離開之前(這似乎是正確的功能該呼叫)。因此,我累了把

[self.navigationItem setHidesBackButton:NO animated:NO]; 

在未來的觀點- (void)viewWillAppear:(BOOL)animated,而且仍然無法正常工作。

這有點令人困惑,因爲self.navigationItem.backBarButtonItem是一個參考視圖的後退按鈕,當它位於頂視圖(ref)下方時,該視圖就會出現。但self.navigationItem.hidesBackbutton是當它是頂視圖時是否顯示後退按鈕(ref)。那麼是否有人知道爲什麼它會隱藏下一個視圖的後退按鈕?

另一個奇怪的事情是,當我轉向另一個視角時,它會起作用。對於更多的視覺表示,可以說我有以下意見:

A > B > C > D 

B是我關心的觀點。我想要隱藏將返回到A的後退按鈕。當我這樣做時,它也隱藏了C上的後退按鈕。但是,如果我做到了D,後退按鈕就會出現,然後一切都按照「應該」進行。也就是說,我可以返回到C,然後返回B. B隱藏了返回按鈕,如果我返回到C,後退按鈕顯示爲應該顯示。

任何想法?

回答

9

在處理UINavigationController時,似乎存在某種有關隱藏和顯示後退按鈕的錯誤。類似的問題與你的是backButton of NavigationController don't appear

我做了一些測試,雖然我沒有解釋這裏有一些建議可能會幫助你。

  • 只有撥打電話到setHidesBackButton:animated:viewDidAppear:viewWillAppear:
  • 不要使用self.navigationItem.hidesBackButton任何地方。
+2

感謝您的回答。把它放在視圖中幫助。任何方法來阻止閃爍的瞬間? – RyanJM 2010-12-07 22:14:43

1

我想你知道隱藏後退按鈕並不能阻止用戶點擊它嗎?

要防止點擊,您必須將其設置爲零。

self.navigationItem.leftBarButtomItem = nil; 

然後,你可以創建在「B」的viewWillAppear方法一個新的後退按鈕。

4

要通過這種愚蠢的錯誤得到的,我並沒有實現setHidesBackButton可言,但在viewDidLoad中,我把下列:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]]; 
+0

謝謝,我遇到了完全相同的問題,並且您的解決方法有所幫助! – dbau 2013-05-12 06:11:24