【问题标题】:How to unwind to the right view controller if current one is presented AND pushed?如果当前视图控制器被呈现并推送,如何展开到正确的视图控制器?
【发布时间】:2018-02-03 19:12:24
【问题描述】:

我有一个视图控制器,比如说 A,它由其他三个视图控制器访问,比如说 B、C 和 D。

B 以模态方式呈现UIViewController A。

C 和 D 是 UINavigationController 的一部分,因此推送视图控制器 A。

如果他们都有模态序列,我可以做一个switch(presentingViewController) 来确定谁是我应该unwind 的视图控制器。问题是,由于其中两个位于导航堆栈(B 和 C)中,它们永远不会是 presentingViewController

我该如何解决这个难题?

【问题讨论】:

标签: ios swift uiviewcontroller uinavigationcontroller unwind-segue


【解决方案1】:

检查A 中是否存在导航控制器。如果是,你会pop,如果不是,你会dismiss

【讨论】:

  • 我需要做一些自定义逻辑,具体取决于我要放松到哪一个。因此,仅弹出/关闭是不够的
  • 听起来A 做得太多了。你可以让一个委托在AviewWillDisappear 上触发BCD 听。不知道你的整个逻辑很难说。
  • 你认为这个答案 (stackoverflow.com/questions/13898324/…) 的委托模式会更好还是你的?
  • 在所有父控制器的 prepareSegue 函数中编写相同的代码是多余的。代表在这里听起来像是一个更好的解决方案。如果在这两种情况下都只需要一行,我认为这并不重要。
猜你喜欢
  • 1970-01-01
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2019-03-28
相关资源
最近更新 更多