我在viewWillDisappear:中有一些代码需要清理,我只想在 View 移回到父 View Controller 时使用。

- (void)viewWillDisappear:(BOOL)animated
{
    if ([self isMovingFromParentViewController] || [self isBeingDismissed]) {
        NSLog(@"isMovingFromParentViewController or isBeingDismissed");
        // clean up
    }
    [super viewWillDisappear:animated];
}

该 View 可以通过两种方式呈现:可以由导航 Controller 推送,也可以作为模态视图 Controller (来自同一导航 Controller )呈现。如果将其按下然后弹出(按“后退”按钮),则将运行我的清理代码。如果将其显示为模态视图 Controller ,然后将其关闭,则该代码不会运行。

我这样辞退:
[rootViewController dismissModalViewControllerAnimated:YES];

我的问题是:为什么我关闭 View Controller 时未设置isBeingDismissed

最佳答案

您的问题是如何取消模态视图。 rootViewController是如何定义的?

当我调用[self dismissModalViewControllerAnimated:YES]时,[self isBeingDismissed]评估为true。

当我调用[parentViewController dismissModalViewControllerAnimated:YES]时,[self isBeingDismissed]评估为true,从而parentViewController是呈现模态视图的UIViewController(注意:不是UINavigationController)。

10-08 00:47