谁应该解雇视图控制器?

Posted

技术标签:

【中文标题】谁应该解雇视图控制器?【英文标题】:Who should be the one dismissing the view controller? 【发布时间】:2016-05-06 07:53:59 【问题描述】:

我想问谁应该解除呈现的视图控制器?

假设我展示了一个视图控制器,并且在该视图控制器中的 IBAction 上,我想关闭它。 我应该通过创建委托方法将该责任传递给呈现视图控制器,还是我应该只在其自身上调用dismissViewController:animated:,这反过来又要求其呈现视图控制器关闭呈现的视图控制器?

所以,我认为这些是一些明确的案例,其中呈现的视图控制器应该是解雇呈现的视图控制器的人

    呈现的视图控制器正在将一些数据传回呈现的视图控制器。 正在呈现的视图控制器想要在被呈现的视图控制器解除后做一些事情。 呈现视图控制器来处理解雇将如何发生,它是否需要某种动画

如果被呈现的视图控制器首先通过检查呈现的视图控制器是否实现了解除委托方法来检查呈现的视图控制器是否真的要承担解除的责任怎么办? 将条件逻辑的复杂性放在这里真的值得吗?

是的,我尝试在其他论坛和问题上阅读它,例如

Dismissing a Presented View Controller

Dismissing Modal View Controllers

Present and dismiss modal view controller

view controllers: presentation, dismissal

但无法真正找到正确的合乎逻辑的答案。

【问题讨论】:

它会因场景而异。在大多数情况下,可以在presentedViewController 上调用它以保持较低的复杂性,但如果在解除之前或之后需要发生底层逻辑,那么委托回演示者会更好。没有正确或错误的答案,它会因您所处的情况而异。 我明白了,但这只是我仍然相信从呈现视图控制器调用解雇是最好的事情,因为它没有任何缺点,但只是一些愚蠢的代码行。我只是想知道从呈现或呈现视图控制器中调用它是否有任何更强的好处 收益只能根据场景来确定。这取决于您解雇时想要做什么。否则,只需使用可用的最简单的解决方案并按自己的方式工作 - 在内部从presentedViewController 中解散,除非您有任何其他理由不这样做。 【参考方案1】:

阅读下面的链接。您将了解动画和演示是如何在视图控制器之间发生的。

https://www.raywenderlich.com/113845/ios-animation-tutorial-custom-view-controller-presentation-transitions

【讨论】:

以上是关于谁应该解雇视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

所有呈现的视图控制器都不会被解雇

在发送者视图控制器被解雇后执行 segue

UIViewController 由于另一个最近被解雇而没有被呈现

UISearchBar 在解雇后正在调整大小

在alerview被解雇后如何使webview成为第一响应者

在呈现新视图控制器后关闭当前视图控制器 - swift