tra*_*per 5 objective-c uiviewcontroller uikit ios
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
Run Code Online (Sandbox Code Playgroud)
在解雇的同时
ViewController3 viewWillDisappear
ViewController2 viewWillAppear
ViewController2 viewDidAppear
ViewController3 viewDidDisappear
ViewController2 viewWillDisappear
Unbalanced calls to begin/end appearance transitions for <ViewController1: 0x7f9c5970afc0>.
ViewController1 viewDidAppear
ViewController2 viewDidDisappear
Run Code Online (Sandbox Code Playgroud)
您可以看到缺失ViewController1 viewWillAppear的Unbalanced calls to begin/end appearance transitions消息和消息.
解决这个问题的任何方法?
看起来像一个 iOS 错误。不确定它在您的真实应用程序中是否有帮助,但在您的 VC2 演示文稿中从 改为Current Context到Over Current Context确实有效,并且据我所知,视觉上看起来是一样的。
文档似乎表明这Over Current Context是 的替代方案UIModalPresentationFullScreen,但它也显然使用当前上下文,所以我认为您的情况的真正区别只是在 VC2 出现后 VC1 没有被删除。
当使用 UIModalPresentationFullScreen 样式呈现视图控制器时,UIKit 通常会在过渡动画完成后删除底层视图控制器的视图。您可以通过指定 UIModalPresentationOverCurrentContext 样式来防止删除这些视图。当呈现的视图控制器具有允许底层内容显示的透明区域时,您可以使用该样式。
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |