JRV*_*JRV 4 objective-c uinavigationcontroller presentmodalviewcontroller ios appdelegate
我在一个应用程序上工作,我的视图有问题[Will/Did]消失方法在返回应用程序时没有被触发.
案例是,我有UINavigationController,它上面有两个视图控制器.当用户按下主页按钮时,用户退出.当他稍后返回应用程序时,以下(简化)代码在我的AppDelegate中运行:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[(UINavigationController *)self.window.rootViewController popToRootViewControllerAnimated:NO];
[self.window.rootViewController presentModalViewController:loginViewController animated:NO];
}
Run Code Online (Sandbox Code Playgroud)
当我弹出导航控制器堆栈上的视图控制器时,我希望view[will|did]disappear可以调用这些方法.然而,事实并非如此,因为当iOS要解雇这些方法时,它们(显然)不再出现在屏幕上.似乎模态视图控制器已经接管了.
如果我不提供模态视图控制器,则按view[will|did]disappear预期调用方法.
我的问题是:如果我想view[will|did]disappear调用这些方法,那么我该如何构建我的代码呢?有没有更好的地方来呈现我的模态loginViewController?
编辑:
为了更清楚地显示我的问题,我在这里创建了一个非常简单的测试项目:https://github.com/JohanVase/ModalViewCauseMissingViewDisappearCalls.请尝试几次按照应用程序中的说明操作,看看我没有在viewWillDisappear方法中发布我的"资源".
我终于向Apple技术支持部门提出了同样的问题.他们得出结论,这是iOS中的一个错误,因此我向Apple提交了一份错误报告.同样的错误似乎出现在iOS 6和最新的iOS 7(Beta 5)中.
Apple技术支持建议如下:
作为一种解决方法,您可以将清理代码移动到一个单独的方法,然后AppDelegate将在导航控制器的顶视图控制器上调用,然后弹出整个导航堆栈.
但是,我认为这在视图控制器中暴露了太多我的细节,所以我选择使用它来实现它willMoveToParentViewController:.当视图控制器被从其父除去这种方法被调用,并且它被适当地调用.
| 归档时间: |
|
| 查看次数: |
5498 次 |
| 最近记录: |