gpt4 book ai didi

iphone - viewDidAppear 在同一个实例上调用两次,但仅在该类第一次从 NIB 加载时调用

转载 作者:行者123 更新时间:2023-12-03 18:26:56 26 4
gpt4 key购买 nike

我有一个导航 Controller 。其中一个 View 在其 viewDidAppear: 中添加了自定义 subview 。我注意到,启动应用程序后第一次导航到此 View Controller 的实例时,viewDidAppear: 调用两次。如果我从堆栈中弹出此 View 并再次导航到它,则每次外观仅调用一次 viewDidAppear: 。所有后续出现都会调用 viewDidAppear: 一次。

对我来说,问题是当我第一次进入这个 View 时,我最终得到的 subview 数量是原来的两倍。我通过引入标志变量或类似变量来解决这个问题,但我想了解发生了什么以及为什么在这种情况下会得到两次调用。

最佳答案

您永远不应该依赖 -viewWillAppear:/-viewDidAppear: 与消失变体适当平衡地调用。虽然系统 View Controller 将尽最大努力始终正确地将调用括起来,但我不知道他们是否能保证这一点,当然,当使用自定义 View Controller 时,您可能会发现可以多次调用这些调用的情况。

简而言之,您的 -viewWillAppear:/-viewDidAppear: 方法应该是幂等的,这意味着如果 -viewDidAppear: 在一个实例中被调用两次行在你的 Controller 上,它应该表现正常。如果您想加载自定义 View ,您可能需要在 -viewDidLoad 中执行此操作,然后只需将屏幕上的内容(如果尚未加载)放入 -viewDidAppear:.

您还可以在 -viewDidAppear: 方法中放置一个断点,以查看为什么它在第一次出现时被调用两次。

关于iphone - viewDidAppear 在同一个实例上调用两次,但仅在该类第一次从 NIB 加载时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3199099/

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