gpt4 book ai didi

swift - 完全关闭中间的 View Controller

转载 作者:行者123 更新时间:2023-11-30 10:30:48 26 4
gpt4 key购买 nike

我已经找了好几天了。问题是这样的:我有一个主视图 Controller 。当它收到通知时,它会呈现一个 NotiViewController,名为 noti1,通过

`home.present(noti1, animated: true, completion: nil)`. 

15秒后,另一个通知到来,我得到顶部 View Controller topVC,呈现另一个NotiViewController,称为noti2,由

`topVC.present(noti2, animated: true, completion: nil)`.

每个 notiVC 都有一个计时器,等待 30 秒后自行关闭。现在我有 Home -> noti1 -> noti2

15 秒后,noti1 超时,必须被解雇。如何在不中断正在演示的 noti2 的情况下关闭它?

我试过了

`orderVC.beginAppearanceTransition(false, animated: false)
orderVC.willMove(toParent: nil)
orderVC.view.removeFromSuperview()
orderVC.removeFromParent()
orderVC.endAppearanceTransition()`

这些代码确实从屏幕上删除了 View ,但它留下了一个 UITransitionView ,这会阻止用户操作。

Blocking UITrainstionView(s)

此图像是在从 super View 等中删除 noti2 后拍摄的,因此有 2 个 UITransitionViews 正在呈现,阻止了用户操作。

有什么想法吗?非常感谢。

最佳答案

找到办法了。我不确定我是对还是错,但这是我的想法: View Controller 必须像以前呈现的那样被解雇。例如,如果您使用present(viewController,animated,completion)来呈现,则应该使用dismiss(animated,completion)来关闭。就我而言,问题是如果您关闭 View Controller ,所有 subview Controller 也将消失。

我解决问题的方法是使用另一种方式“显示”目标 View Controller : parentVC.view.addSubview(childVC.view)
ParentVC.addChild(childVC)
childVC.didMove(toParent:parentVC)

添加一些 View Controller 后,我得到了一个树parentVC -> child1 -> child2 -> child3...如果我想关闭child2,我的问题中的代码有效: child2.willMove(toParent: nil)
child2.view.removeFromSuperview()
child2.removeFromParent()

没有 UITransitionView 阻止用户操作,但它没有动画。对于我来说这已经足够好了。

关于swift - 完全关闭中间的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59278270/

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