2012-07-22 41 views
0

當我嘗試在啓動之間恢復UINavigationController的狀態時,我遇到了UIBarButtonItem/UINavigationBar的一些奇怪行爲。在恢復狀態導航控制器後截斷後退按鈕標題

下面的代碼片段顯示了我如何恢復導航控制器的狀態。此代碼片段在viewDidLoad方法中執行。

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; 
if ([ud objectForKey:HBStateRestorationQuoteSelection]) { 
    NSInteger index = [ud integerForKey:HBStateRestorationQuoteSelection]; 

    // Fetch Quote 
    NSDictionary *quote = [self.quotes objectAtIndex:index]; 

    // Initialize Quote View Controller 
    HBQuoteViewController *vc = [[HBQuoteViewController alloc] initWithNibName:@"HBQuoteViewController" bundle:[NSBundle mainBundle]]; 
    vc.quote = quote; 

    // Push Quote View Controller Onto Navigation Stack 
    [self.navigationController pushViewController:vc animated:NO]; 
} 

結果是由於某種原因截斷了後退按鈕標題。導航控制器以正常方式使用時,此行爲不存在。

請注意,截斷不是由於導航欄中標題的大小。正如我前面提到的,當我不使用這種狀態恢復邏輯時,後面條按鈕的標題顯示正常。

我也嘗試將恢復代碼放在viewWillAppear方法中,或者通過創建自定義後退按鈕來更改後欄按鈕的標題,但這些方法都不能解決問題。

enter image description here

回答

1

我懷疑問題是由於推動控制器父具有圖,顯示之前。我相信你可能會在以下方面取得一些成功,儘管它有一些工作。

  • 當您要恢復狀態時,然後隱藏根視圖控制器中的導航欄,並顯示啓動圖像而不是普通內容。

  • 當根視圖控制器獲取「viewDidAppear」,然後使用主隊列上的調度塊,並推送其他控制器,也配置爲隱藏導航欄並顯示啓動圖像。

  • 當你到達顯示SUPPOSE的視圖控制器時,此時顯示真實視圖並啓用顯示導航欄。

這是做的壓縮方式或多或少什麼系統正在做什麼,總是有父視圖推另一個視圖前至少得到「viewDidAppear」。