UINavigationController 和 viewWillDisappear

2024-03-28

因此,我的应用程序中有一个 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(使用前将#替换为@)

UINavigationController 和 viewWillDisappear 的相关文章

随机推荐