2014-02-19 26 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

这是我遇到的问题。快速和简单的修复。 –

相关问题