如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章

UIView 动画块中的图层动画

如何在Objective C项目中使用ALCameraViewController库

访问 kivy 弹出父级

如何在 Swift 上从最后一个 VC 更改为中间 VC

使用 Kivy 的 Python 跨类函数调用

没有动画的关闭模态