1

我有與UINavigationController的一個很奇怪的問題不是彈出UINavigationBar的項目。 我發現了一個非常類似的問題在這裏:
UINavigationController not popping UINavigationBar itemsUINavigationController的iPad上

但解決方案必須與事實是這傢伙又增加了一個類別的NSMutableArray做的,我沒有做這樣的事情。

總之,問題是這樣的:我有一個導航控制器和我推着它的幾個視圖控制器。然後當點擊「後退」按鈕時,視圖控制器會彈出,但相應的導航項目不會。如果我再次點擊,那麼導航項目會彈出。

此外,它只能使用從導航控制器的導航欄上的後退按鈕時發生。如果我明確地調用popViewController(例如從一個按鈕按下),它按預期工作。

而這只是發生在我的iPad上運行OS 3.2,卻沒有關於我的iPod Touch上運行OS 3.0或在模擬器上。

我一直想從我的應用程序的其餘部分一個單獨的項目來隔離問題,所以我可以用它嘗試,但我不能讓它重現,儘管它發生在特定時代的100%在我的應用中查看。

我知道這些信息不足以得到具體的答案,但我只是想知道是否有人聽說過導航控制器沒有按預期方式彈出導航項目,只是爲了讓我能夠知道在哪裏可以找到導航項目接下來調查。

下面是我用推視圖控制器代碼的一個例子,這是非常簡單的,我不想做任何特別用它:

// pushing a view controller from a button press (set up with interface builder) 
- (IBAction) tappedExtras 
{ 
    ExtrasViewController *controller = [[ExtrasViewController alloc] initWithNibName:@"ExtrasViewController" bundle:nil]; 

    [self.navigationController pushViewController:controller animated:YES]; 

    [controller release]; 
} 

注:在例子中,我使用一個名爲ExtrasViewController的自定義視圖控制器類,但問題發生在我嘗試的任何一種視圖控制器上。

下面是用於彈出視圖控制器明確,也通過按下一個按鈕設置與界面生成器引發了一些代碼:

- (IBAction) cancelChanges 
{ 
    userCancelled = YES; 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

這個完美的作品(彈出視圖控制器明確),但完全相同的視圖控制器,如果不是點擊使用界面構建器設置的按鈕,而是點擊導航欄上的後退按鈕,導航項目不會正確彈出。

回答

1

我得到了與坡平第三級後生存導航同樣的問題推視圖控制器。 該問題僅出現在iPad上的橫向。 iPhone上沒有問題(3.1.3 & 4.0)。當然,在模擬器上可以。

+0

是的,這正是我正在發生的事情。 – filipe 2010-07-07 12:30:09

+0

我只在橫向模式下使用ipad,所以我沒有意識到這是相關的。 包括我的搜索「景觀」我在這裏找到兩個回答問題: http://stackoverflow.com/questions/2770477/uinavigationcontroller-back-button-half-works-in-ipad-landscape-orientation http:///stackoverflow.com/questions/2694613/uinavigationcontroller-navigation-stack-problems-in-landscape-mode 我現在沒有用我的iPad來測試它,但這看起來很有希望。 感謝您指出正確的方向。一旦我可以在iPad上測試並正常工作,我會接受你的答案。 – filipe 2010-07-07 13:16:42

+0

是的,我上面提到的那兩個問題的答案是有效的。 解決方案是確保您擁有的每個視圖控制器都從shouldAutorotate ...方法返回相同的值。 再次感謝。 – filipe 2010-07-07 13:40:29