2014-02-19 37 views
2

我使用SDK提供的狀態恢復。當狀態恢復時,RootView控制器顯示爲簡略

我加載從腳本的所有我的看法控制器。初始視圖控制器模態地顯示另一個視圖控制器。兩者都有一個恢復標識符。

恢復工作正常,但:當我在模態呈現視圖控制器,然後按家庭(保存狀態)。然後重新打開該應用程序,並恢復狀態開始將出現以下情況:

一瞬間我看到的初始視圖控制器,然後將畫面改變爲模態呈現控制器,其事實上,我希望看到的。

這是怎麼發生的?緩存目錄中的快照確實顯示了正確的屏幕(來自所呈現的視圖控制器)。

您可以重現該問題與this project。添加一個斷點在初始視圖控制器的viewDidAppear方法和恢復狀態的時候,你會看到初始視圖控制器的觀點,在屏幕和視圖層次:

(lldb) po [[UIWindow keyWindow] recursiveDescription] 
<UIWindow: 0x155607f0; frame = (0 0; 320 480); autoresize = W+H; gestureRecognizers = <NSArray: 0x15560d20>; layer = <UIWindowLayer: 0x1555f4f0>> 
    | <UIView: 0x15542ad0; frame = (0 0; 320 480); autoresize = RM+BM; layer = <CALayer: 0x15542a70>> 
    | | <UIButton: 0x155432d0; frame = (137 269; 46 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x15543b30>> 
    | | | <UIButtonLabel: 0x15663dd0; frame = (0 6; 46 18); text = 'Button'; clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x1566da20>> 
    | | <_UILayoutGuide: 0x15542b60; frame = (0 0; 0 20); hidden = YES; layer = <CALayer: 0x15542fe0>> 
    | | <_UILayoutGuide: 0x15541060; frame = (0 480; 0 0); hidden = YES; layer = <CALayer: 0x155410d0>> 

如果檢查視圖控制器層次結構,模態呈現視圖控制器不在初始視圖控制器呈現屬性:

(lldb) po [[[UIWindow keyWindow] rootViewController] presentedViewController] 
nil 

和斷點是(理論上)狀態恢復之後。但稍後它會被正確設置。

+1

把一些代碼.. –

+0

居然沒有任何代碼。只有Application委託方法返回yes。其他否則是隱含的。 –

回答

5

這個問題似乎與在那裏你讓框架調用[window makeKeyAndVisible]你的故事板工作時發生的,它是恢復後發生的事情。

如果在下一行添加到application:willFinishLaunchingWithOptions

[self.window makeKeyAndVisible]; 

它會解決它。

+0

這是我遇到的問題。快速和簡單的修復。 –

相關問題