从呈现视图控制器推送视图控制器

时间:2018-01-16 21:14:53

标签: ios swift modalviewcontroller pushviewcontroller

我有一个视图控制器,以模态方式呈现表视图控制器。在所呈现的表视图控制器的didSelectRowAt方法中,我实例化另一个视图控制器。我想解雇所提供的视图控制器并让呈现视图控制器推送这个新的视图控制器。

我可以用某种方式使用它吗?

self.presentingViewController?.navigationController?.pushViewController(newVC, animated: true)

3 个答案:

答案 0 :(得分:1)

不,它将无法使用委托通知呈现视图控制器解除模态并按此执行推送

  self.dismiss(animated: false, completion: nil)

  let vc = self.storyboard?.instantiateViewController(withIdentifier: "identifier")

   self.navigationController?.pushViewController(vc!, animated: true)

答案 1 :(得分:1)

您必须设置一个委托,或使用不同的方式告诉视图控制器的父级将其解除并显示新的视图控制器。

答案 2 :(得分:1)

  

我想解雇所呈现的视图控制器并让呈现视图控制器推送这个新的视图控制器。

模态视图控制器通常代表某种问题,例如您想看到哪张照片?您想与哪个联系人交谈?模态视图控制器应该让用户指出一个答案,然后它应该将答案返回给它的父母,即呈现控制器。那个呈现视图控制器的人应该负责下一步该做什么。解散模态控制器?调整数据模型?将新控制器推入导航堆栈?

将呈现视图控制器和模态控制器之间的关系视为就业协议,其中呈现控制器是管理者而模态控制器是工作者。工作人员可能会根据经理的要求执行某项任务,然后向后报告,以便经理可以决定下一步该做什么。但是,工人不会告诉经理该做什么 - 这不是工人的工作。