gpt4 book ai didi

ios - 在当前上下文中以模态方式呈现时,在展开时,不会调用 viewDidAppear

转载 作者:搜寻专家 更新时间:2023-10-30 22:13:30 25 4
gpt4 key购买 nike

我正在开发的应用程序有问题。

  • XCode 版本:9.2 (9C40b)
  • 编程语言:Swift 4
  • 应用的目标 iOS 版本:11.2

场景:我有一个 mainVC (ViewController),它调用模态呈现的 secondaryVC。在 secondaryVC 中进行选择后,我按下 UIButton 通过展开转场返回到 mainVC。

在 secondaryVC 中,transition 配置为“Cross Disolve”,Presentation 配置为“Over Current Context”,以将前一个 View 视为背景(背景配置为 50% 不透明度):

enter image description here

症状:在这种情况下,当通过展开转场返回时,viewDidAppear 永远不会被调用。我需要调用它来执行进一步的检查功能。如果我将演示文稿设置为“全屏”而不是“当前上下文”,则会调用它,但在这种情况下,我无法将之前的 View 视为背景。

问题:我怎样才能让 viewDidApper 被调用,从而在主 VC 上保持 secondaryVC 的透明度?

PS:很抱歉,如果我在写这个问题时遗漏了什么;这是我的第一次。我搜索过这个论坛和其他论坛,但没有找到解决方案(或者我还没有找到)。

最佳答案

viewDidAppear 没有被调用的原因是第一个 View Controller 永远不会消失。如果您使用“Over Current Context”,那么您仍然可以在 View Controller 二后面看到 View Controller 一(假设有透明部分)。所以 View Controller 一保持可见,永远不会消失,因此当 View Controller 二显示时,既不会调用 viewWillDisappear 也不会调用 viewDidDisappear。然后,当您放松时,第二个 View Controller 消失但拳头没有出现,因此不会调用 viewWillAppear 和 viewDidAppear。

如果您使用“全屏”,那么第一个 View Controller 会消失,因此所有功能都会触发。

如果您需要在第二个 View Controller 消失并返回到第一个 View Controller 时执行某些操作,您可以将它放在 unwind 函数中。

编辑

这是执行一些代码的技巧,例如从展开的转场显示警报 View Controller :

    DispatchQueue.main.async {
let ac = UIAlertController(title: "Title", message: "Message", preferredStyle: .alert)
ac.addAction(UIAlertAction(title: "Ok", style: .default, handler: nil))
self.present(ac, animated: true, completion: nil)
}

基本上所做的是将所需的代码推回主线程,它发生在展开转场完成并且您回到第一个 View Controller 中之后。

关于ios - 在当前上下文中以模态方式呈现时,在展开时,不会调用 viewDidAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48043124/

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