我在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)。