gpt4 book ai didi

ios - 什么时候调用 viewWillDisappear?什么时候不是?

转载 作者:可可西里 更新时间:2023-11-01 04:21:47 25 4
gpt4 key购买 nike

我有以下场景:

在 vcA 中(当用户点击 UI 中的按钮时):

  • 使用 NIB 文件实例化 vcB -(当用户点击 UI 中的按钮时)
  • 在 vcB 中初始化一个 iVar
  • 使用 presentModalViewController 呈现 vcB
  • 在 vcB 的 viewDidLoad 中命中断点
  • 在加载来自 vcB 的 View 之前,调用了 vcA 的 viewWillDisappear(我通过 NSLog 语句看到了它)
  • 已加载来自 vcB 的 View
  • 显示其 iVar 的正确值(在 vcA 中设置)
  • 使用 dismissModalViewController 关闭 vcB

回到 vcA 的视野 -

重复该过程(模拟用户在 UI 中点击相同按钮的操作):

  • 用NIB文件实例化vcB
  • 改变vcB中iVar的值
  • 使用 presentModalViewController 呈现 vcB
  • 这次vcB的viewDidLoad断点没有命中
  • 在加载来自vcB的 View 之前,这次也调用了vcA的viewWillDisappear
  • 已加载来自 vcB 的 View
  • 显示其 iVar 的错误值(这是以前的值)

所以,我很困惑。

  1. 为什么调用 vcA 的 viewWillDisappear?调用的条件是什么?
  2. 为什么没有第二次调用 vcB 的 viewDidLoad?我应该改用“addSubview”吗?

提前致谢....山姆。

最佳答案

正如您可能从名称中猜到的那样,每当 View Controller 的 View 将要被隐藏、删除等时,都会调用 -viewWillDisappear。关于 UIViewController reference page 的完整描述.

-viewDidLoad 和 -viewWillDisappear 不是匹配集。为了节省资源,并且因为一些 View Controller 可能永远不会显示它们的 View , View Controller 只在第一次实际需要时加载它们的 View 。 -viewDidLoad 在此之后被调用。

-viewWillAppear 和 -viewDidAppear 在 View 实际显示之前和之后被调用。同样,-viewWillDisappear 和 -viewDidDisappear 在 View 不再可见之前和之后被调用。

最后,-viewDidUnload 是 -viewDidLoad 的对应项,在 View 被丢弃时调用。当系统需要释放一些内存时可能会发生这种情况,但也可能根本不会发生。

在 iOS 6 中 viewWillUnloadviewDidUnload 已弃用

因此,为了直接解决您的第二个问题,vcB 的 -viewDidLoad 没有被第二次调用,因为那时 vcB 已经加载了它的 View ,不需要再次调用。

关于ios - 什么时候调用 viewWillDisappear?什么时候不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5242012/

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