UIViewController 的 viewDidAppear 在模式关闭后不会被调用

发布于 2024-09-25 11:44:40 字数 488 浏览 4 评论 0原文

UIViewController(视图 A)通过将另一个视图控制器(视图 B)作为模态控件调用来调用它。

[自我呈现ModalViewController:ViewB动画:TRUE];

视图 B 通过调用而存在:

[selfmissModalViewControllerAnimated:TRUE];

发生这种情况时,一切看起来都正确,除了视图 A 的 viewWillAppear 和 viewDidAppear 没有被调用(尽管它们在应用程序初始化期间被调用)。奇怪的是......我相信我以前做过这个,但我不确定现在发生了什么。

我做的事情有什么明显错误吗? 谢谢!

* 更新 * 我刚刚了解到,这种行为仅发生在 UIModalTransitionStylePartialCurl 转换类型中。对于所有其他转换类型,父视图控制器可以很好地获取其 viewDidAppear 消息。

那么现在我该怎么办?!

A UIViewController (View A) invokes another view controller (View B) by invoking it as a modal control.

[self presentModalViewController:ViewB animated:TRUE];

And View B exists by invoking:

[self dismissModalViewControllerAnimated:TRUE];

When this occurs everything looks right EXCEPT that View A's viewWillAppear and viewDidAppear does not get called (they are called during app init though). Weird thing is... i believe ive done this before, but im not sure what is going on now.

Is there anything obviously wrong that im doing?
Thanks!

* UPDATE *
I just now learned that this behavior only occurs with the UIModalTransitionStylePartialCurl transition type. For all other transition types the parent view-controller gets its viewDidAppear message just fine.

So now what am i suppose to do!?!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无力看清 2024-10-02 11:44:40

我刚刚遇到了同样的问题。

我通过添加委托和委托方法解决了这个问题。

因此,当控制器 A 将控制器 B 作为具有卷页功能的模态视图控制器打开时,我将控制器 b's.delegate 的实例设置为控制器 a。

在控制器 B 中我添加以下内容:

-(void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    if (delegate)
        [delegate didCloseInfoViewController];
}

I just ran in to the same problem.

I solved it by adding a delegate and a delegate method.

So when Controller A opens Controller B as a modal view controller with a page curl i set the instance of controller b's.delegate to be controller a.

In controller B i add this:

-(void) viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    if (delegate)
        [delegate didCloseInfoViewController];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文