在呈现viewcontroller时状态恢复无效?

时间:2016-10-12 11:46:12

标签: ios objective-c iphone uiviewcontroller state-restoration

我没有使用故事板。目前在ViewController1中。在按钮单击事件中,我调用此代码。

InnerViewController *innerVc = [[InnerViewController alloc]  initWithNibName:@"InnerViewController" bundle:nil titleText:@"vaibhav"];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:innerVc];
    nav.restorationIdentifier = @"innerNavSR";
    [self.navigationController presentViewController:nav animated:YES completion:nil];

在InnerViewController restorationIdentifierrestorationClass中给出。我有适当的方法来修复。像

viewControllerWithRestorationIdentifierPath
encode and decode restoration. 

如果我改变我的

[self.navigationController presentViewController:nav animated:YES completion:nil];

[self.navigationController pushViewController:innerVc animated:YES];

工作正常。我现在缺少什么或做错了什么。试一试,我甚至试过这个:

[self presentViewController:nav animated:YES completion:nil];

但没用。不行。

呈现时的结果是 -

viewControllerWithRestorationIdentifierPath

decodeRestorableStateWithCoder被调用。来电也在viewdidload但不在viewwillappear。我在视觉上看到了Viewcontroller1。但是push

一切都很好

目前 ??

需要特别之处

1 个答案:

答案 0 :(得分:2)

我有一个非常类似的问题,并且努力了半天。问题是我在定期创建视图控制器时分配了恢复标识符,但是在创建恢复的实例时没有分配它。

在您的特定场景中,请确保在恢复内部NC时,还会分配@" innerNavSR"返回操作系统之前的标识符。

希望有所帮助。