【发布时间】:2017-11-29 14:00:46
【问题描述】:
我有一个带有几个动画按钮的 viewController,当用户按下一个按钮时,背景会变得模糊(动画),并且会显示一个菜单来选择一些东西(它们都转到一个新的 viewController)。
所以基本上有一个场景,用户打开菜单,场景是模糊的,除了菜单和用户按下一个按钮,另一个 viewController 以编程方式显示一个 crossDissolve。这就是我展示新控制器的方式:
let storyboard = UIStoryboard.init(name: "Timer", bundle: nil)
let vc = storyboard.instantiateInitialViewController()!
vc.modalTransitionStyle = .crossDissolve
present(vc, animated: true, completion: nil)
到目前为止一切顺利,但我无法重置原始场景(基本上只是移除模糊并重置动画按钮)。我在其中有一个名为 setupScene() 的函数,它为应用程序启动做好一切准备(一些按钮被隐藏,模糊的 alpha 为 0,等等......)。
我只是像这样关闭新的 viewController:
dismiss(animated: true, completion: nil)
然后再次显示具有最后状态(模糊等)的原始场景。
所以当新的 viewController 出现时,我想在后台重置原始 viewController 中的所有内容,这样当新的 viewController 被关闭时,旧场景已经被重置,但这不起作用。我试图在 viewDidAppear 中移动 setupScene() 函数,但是在 viewDidAppear 或 viewDidLoad 中,新的 viewController 首先被解除,原始 viewController 再次处于模糊状态,然后运行 setupScene() 以重置所有内容(这显然有效很好)。
有没有办法在新的 viewController 显示或 crossDissolve 运行时在后台重置所有内容?
【问题讨论】:
标签: ios swift uiviewcontroller viewdidload dismiss