首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UINavigationController和viewWillDisappear

UINavigationController和viewWillDisappear
EN

Stack Overflow用户
提问于 2010-11-02 03:04:35
回答 5查看 5.9K关注 0票数 3

因此,我的应用程序中有一个UINavController,并试图在用户按下back按钮时执行一个方法。我到处都找过了,只能找到一些断章取义的零碎东西。

有没有一种方法可以在用户按下back按钮关闭当前视图时进行某种检查?(由于某些原因,用于弹出的视图的viewWillDisappear方法从不会被调用。我确实读到过,除非您转发该呼叫,否则不会。)这听起来对吗,有人有什么想法或建议吗?提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-02 04:08:21

如果你通过代码向UIView添加一个UINavigationController,那么默认情况下,它不会将这些消息发送到它的子视图。只有当UINavigationController自己接收到这些调用时,它才会这样做。也许这就是你的问题(我不知道你的视图设置)。

因此,在添加UINavigationController视图时,请确保手动向其发送这些消息。

代码语言:javascript
复制
UINavigationController *navigationController = [UINavigationController alloc] initWithRootViewController:rootViewController];

[navigationController viewWillAppear:NO];
[aView addSubview:navigationController.view];
[navigationController viewDidAppear:NO];

至少,这是我在开发过程中发现的。我已经寻找了很长一段时间,但我仍然不明白它背后的理由。

票数 2
EN

Stack Overflow用户

发布于 2011-07-22 01:16:35

看一看UINavigationControllerDelegate。当UIViewController被推送到导航控制器堆栈时,只有两个方法会被调用。类似地,如果一个正在被推送,那么可能只是弹出了一些东西。这就是我称之为viewDidDisappear和viewWillDisappear的方式。

代码语言:javascript
复制
# 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];   
}

这段代码保持了对上一个被推入的视图控制器的指针引用,这样一旦我们推入另一个,我们就可以弹出最后一个(如果它仍然存在的话)。

票数 6
EN

Stack Overflow用户

发布于 2010-11-02 04:09:30

您可以始终隐藏默认的后退导航按钮,并使用其自己的方法创建自己的按钮,以便在按下时调用。

执行你想要的任何代码,然后弹出视图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4072192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档