2011-11-15 176 views
2

我升級到XCode 4.2。當我的應用程序在iOS 4.0模擬器中運行時,導航欄顯示在多個視圖中,並被推入。當應用程序在iOS 5.0模擬器中運行並且在裝有iOS 5.0的設備上運行時,導航欄在所有視圖中都消失了,並且表格視圖被上推以填充該空間。導航控制器使用以下代碼創建的:導航控制器欄後退按鈕在iOS 5中缺失

navigationController = [[UINavigationController alloc] initWithRootViewController:swViewController]; 

和意見被壓入navigationController像這樣:

[window addSubview:self.navigationController.view]; 

UIBarButtonItem *backButtonItem  = [[[UIBarButtonItem alloc] initWithTitle:@"NextLevel" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease] ; 
    self.navigationItem.backBarButtonItem = backButtonItem; 
    [self.navigationController pushViewController:self.listController animated:YES]; 

的navigationController經由添加到窗口

更新1 - 它看起來像iOS 5中的導航欄默認是隱藏的,所以我加了

[[self navigationController] setNavigationBarHidden:NO animated:YES]; 

我現在看到了導航欄,但沒有backButtonItem中指定的後退按鈕。

更新2 - 我也設置了navigationController標題,但是也沒有顯示出來。

  self.navigationController.title  = @"Title"; 

是否有東西丟失或需要使用導航欄是在安裝iOS 5.0的頂部可見?

回答

1

我想通了。我有下面的代碼隱藏導航欄時,我突然出現回升按本SO鏈接

hide_nav_bar

- (void) viewWillAppear:(BOOL)animated 
{ 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
    [super viewWillAppear:animated]; 
} 

一旦我註釋掉的代碼,然後返回按鈕出現了。

1

這不是百分百清楚什麼是錯的。在這種情況下(在較舊的iOS上工作,在升級時出現中斷),您可能一直在做錯事,但它恰好適用於較早的操作系統。

就像猜測一樣,我推薦使用UIWindow的rootViewController屬性而不是舊式的addSubview:call。換句話說,

window.rootViewController = self.navigationController; 

看看是否有幫助。

+0

它很可能是因爲它在iOS 5上破解的原因是我以前做錯了什麼。每次升級Apple都會嘗試改進錯誤檢查。我在上面添加了你的代碼,但是沒有修復它。 –