簡體   English   中英

從呈現視圖控制器推送視圖控制器

[英]Push View Controller from Presenting View Controller

我有一個視圖控制器,以模態方式呈現表視圖控制器。 在所呈現的表視圖控制器的didSelectRowAt方法中,我實例化另一個視圖控制器。 我想解雇所呈現的視圖控制器並讓呈現視圖控制器推送這個新的視圖控制器。

我可以用某種方式使用它嗎?

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

不,它將無法使用委托通知呈現視圖控制器解除模態並按此執行推送

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

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

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

您必須設置委托,或使用不同的方式告訴視圖控制器的父級將其解除並顯示新的視圖控制器。

我想解雇所呈現的視圖控制器並讓呈現視圖控制器推送這個新的視圖控制器。

模態視圖控制器通常代表某種問題,比如你想看到什么照片? 或者您想與哪個聯系人交談? 模態視圖控制器應該讓用戶指出一個答案,然后它應該將答案返回給它的父母,即呈現控制器。 那個呈現視圖控制器的人應該負責下一步該做什么。 解散模態控制器? 調整數據模型? 將新控制器推入導航堆棧?

將呈現視圖控制器和模態控制器之間的關系視為就業協議,其中呈現控制器是管理者而模態控制器是工作者。 工作人員可能會根據經理的要求執行某項任務,然后向后報告,以便經理可以決定下一步該做什么。 但是工人不會告訴經理該做什么 - 這不是工人的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM