因此,我的应用程序中有一个 UINavController,并尝试在用户按下后退按钮时执行一个方法。我到处搜索,只能找到断章取义的零碎内容。
有没有办法实现某种检查,当用户按下后退按钮以关闭当前视图时进行捕获? (出于某种原因,弹出视图的 viewWillDisappear 方法永远不会被调用。我确实读过,除非您转发该调用,否则不会被调用?)这听起来正确吗?有人有任何想法或建议吗?提前致谢。
看看UINavigationControllerDelegate
。当 UIViewController 被推送到导航控制器堆栈时,只有两个方法被调用。类似地,如果有人被推入,那么很可能只是弹出了一些东西。这就是我调用 viewDidDisappear 和 viewWillDisappear 所做的事情。
# pragma mark - UINavigationControllerDelegate Methods
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
static UIViewController *vcPointer = nil;
// If the previous view controller is still around then let's send a viewWillDisappear message
if (vcPointer != nil) {
if ([vcPointer respondsToSelector:@selector(viewWillDisappear:)]) {
[vcPointer viewWillDisappear:animated];
}
}
// Keep track of a pointer to the current viewController
vcPointer = viewController;
[viewController viewWillAppear:animated];
}
此代码保留对最后一个被推送的视图控制器的指针引用,以便一旦我们推送另一个视图控制器,我们就可以弹出最后一个视图控制器(如果它仍然存在)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)