gpt4 book ai didi

ios - 关闭 ViewController 时触发 ViewWillAppear 和 ViewDidAppear

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:04 24 4
gpt4 key购买 nike

我正在制作一个 iOS 应用程序,我想在其中呈现如下页面流:

基本上我想实现的就是这样的页面流:

PageA
PageB
PageC
PageD, dismiss back to:
PageC
PageD
PageE, dismiss back to:
PageA (starting point, start over again)

我正在使用 ShowViewcontroller 显示页面(模态)并使用 DismissViewcontroller 关闭。

根据 Apple 的文档,如果我在堆栈的早期关闭一个 VC,所有后续的 UIViewCOntroller 也会被关闭(Apple doc)。

但是我的经验是 ViewWillAppearViewDidAppearUIViewController 上触发,即使它们没有出现也会被关闭(例如在示例中当从 PageE 返回到 PageA 时,ViewWillAppear 会在 PageDPageC 上调用, PageB 也是)。

这对我来说似乎不合逻辑。谁能解释为什么会这样?如果我以错误的方式处理这个问题,也许可以纠正我。

我正在使用 Xamarin.iOS。

苹果文档:如果您连续呈现多个 View Controller ,从而构建呈现 View Controller 的堆栈,在堆栈中较低的 View Controller 上调用此方法将关闭其直接 subview Controller 和堆栈中该 subview Controller 上方的所有 View Controller 。发生这种情况时,只有最顶层的 View 会以动画方式消失;任何中间 View Controller 都只是从堆栈中删除。最顶层的 View 使用其模式转换样式被关闭,这可能与堆栈中较低层的其他 View Controller 使用的样式不同。

最佳答案

ViewControllers 使用堆栈。每当将新的 ViewController(任何类型)添加到堆栈中时,您都会失去对 ViewController 的越来越多的控制(尤其是在为 ViewController 使用模态时)。因此,假设您的堆栈中有 5 个 ViewController(A、B、C、D、E,根据您的示例),并假设它们是按照规定的顺序创建的,以便从 ViewController E 返回到 ViewController A,您必须遍历整个堆栈。这意味着您需要首先显示您方式中的每个 ViewController,以便关闭(因为您已经显示了 ViewController E,所以这里不会发生这种情况)。

希望对您有所帮助。祝你好运!

爱与问候,比约恩

关于ios - 关闭 ViewController 时触发 ViewWillAppear 和 ViewDidAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28846733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com