我使用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
和断点是(理论上)状态恢复之后。但稍后它会被正确设置。
把一些代码.. –
居然没有任何代码。只有Application委托方法返回yes。其他否则是隐含的。 –