如何在 self.dismiss 块中推送 UIViewController?
Posted
技术标签:
【中文标题】如何在 self.dismiss 块中推送 UIViewController?【英文标题】:How to push UIViewController in self.dismiss block? 【发布时间】:2017-03-12 17:09:54 【问题描述】:HomeViewController 作为主视图控制器,LeftMenuViewController 以模态方式呈现在当前上下文中。现在在 LeftMenuViewController 中有打开 ProfileViewController 的选项,但我不想在 LeftMenuViewController 上显示 ProfileViewController,因此使用了此代码,但由于某种未知原因它无法正常工作,LeftViewController 被解除,但 ProfileViewController 没有被推到前面。
@IBAction func editAction(_ sender: Any)
let homeVC:HomeViewController = self.presentingViewController!.childViewControllers[0] as! HomeViewController
self.dismiss(animated: false)
DispatchQueue.global().async
let infoVC:ProfileViewController = self.storyboard?.instantiateViewController(withIdentifier: "ProfileViewController") as! ProfileViewController
homeVC.navigationController?.pushViewController(infoVC, animated: true)
任何建议都会很有帮助
【问题讨论】:
你能描述一下究竟是什么不起作用吗?ProfileViewController
不显示或LeftMenuViewController
不隐藏
LeftViewController 被解除,但 ProfileViewController 没有被推到前面。
你尝试调用present
函数
尝试将DispatchQueue.global()
更改为DispatchQueue.main
@VarunNaharia UI 操作应该放在主队列中。
【参考方案1】:
改变
DispatchQueue.global()
到
DispatchQueue.main
UI 操作应该放在主队列中
【讨论】:
不需要整个调度,因为你已经在主队列中了。以上是关于如何在 self.dismiss 块中推送 UIViewController?的主要内容,如果未能解决你的问题,请参考以下文章