ios - UIKit 错误? viewWillAppear 在应该调用时未调用

标签 ios objective-c uiviewcontroller uikit

<分区>

https://github.com/trapper-/unballanced

我在我正在处理的项目中发现了一个错误,并将其提取到上面链接的一个简单示例中。我认为这可能是一个 UIKit 错误。

基本上 VC1 在容器 VC 内,然后 VC2 在当前上下文中模态呈现(因此它也被包含),然后 VC3 以模态全屏呈现。现在,当我们返回 VC1 时,将缺少 VC1 的 viewWillAppear。这也会导致控制台警告。

Unbalanced calls to begin/end appearance transitions for <ViewController1: 0x7f9c5970afc0>

这是您将在控制台中看到的内容。

呈现时

ViewController1 viewWillAppear
ViewController1 viewDidAppear
ViewController1 viewWillDisappear
ViewController2 viewWillAppear
ViewController2 viewDidAppear
ViewController1 viewDidDisappear
ViewController2 viewWillDisappear
ViewController3 viewWillAppear
ViewController3 viewDidAppear
ViewController2 viewDidDisappear

解雇时

ViewController3 viewWillDisappear
ViewController2 viewWillAppear
ViewController2 viewDidAppear
ViewController3 viewDidDisappear
ViewController2 viewWillDisappear
Unbalanced calls to begin/end appearance transitions for <ViewController1: 0x7f9c5970afc0>.
ViewController1 viewDidAppear
ViewController2 viewDidDisappear

可以看到缺失的ViewController1 viewWillAppearUnbalanced calls to begin/end appearance transitions而是消息。

这个问题有什么解决办法吗?

最佳答案

似乎是一个 iOS 错误。不确定它是否对您的真实应用程序有帮助,但在您的 VC2 演示文稿中从 Current Context 更改为 Over Current Context 实际上有效并且在我看来视觉上看起来是一样的.

文档似乎表明 Over Current ContextUIModalPresentationFullScreen 的替代方法,但它显然也在使用当前上下文,所以我认为真正的区别在于您的情况只会是在 VC2 出现后 VC1 没有被移除。

When presenting a view controller using the UIModalPresentationFullScreen style, UIKit normally removes the views of the underlying view controller after the transition animations finish. You can prevent the removal of those views by specifying the UIModalPresentationOverCurrentContext style instead. You might use that style when the presented view controller has transparent areas that let underlying content show through.

Docs on View Controller Programming

关于ios - UIKit 错误? viewWillAppear 在应该调用时未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49247413/

相关文章:

c# - 在模拟器中测试应用程序状态的保存

ios - 导航菜单 swift 2.2

ios - 由于 BoringSSL 证书验证失败,iOS 上的安全 websocket 连接失败

ios - 架构 i386 的 undefined symbol : "_OBJC_CLASS_$_Analytics"

objective-c - 如何从 Cocoa 检索 iTunes 路径?

ios - View 被向下推了大约 20px,但是当我旋转屏幕时它是固定的

ios - 我使用 UIView `animateWithDuration:animations:` 方法为我的 View 设置动画,它的底部不断变化,但它显示没有设置动画

c++ - 将 NSTimer 添加到 C++ 类

ios - UINavigationController 始终全屏不调整大小

ios - 关闭 viewController 后重新加载 tableView