gpt4 book ai didi

ios - 错误编程的后果 : dismissViewController vs popViewController

转载 作者:IT王子 更新时间:2023-10-29 08:11:41 27 4
gpt4 key购买 nike

我了解 dismissViewControllerAnimated:completion:popViewControllerAnimated: 之间的区别,如 on Stack Overflow 所述在这里:

-dismissViewControllerAnimated:completion: method is used to dismiss an UIViewController, which was presented by the method: -presentViewController:animated:completion:.

-popViewControllerAnimated: method of UINavigationController is used to pop a controller shown by -pushViewController:animated method of UINavigationController.

我最近在我的应用程序中发现了一个错误,我在其中使用 [self dismissViewControllerAnimated:completion:] 关闭导航嵌入式应用程序中通过推送呈现的 VC。当我应该吃披萨时,我炸了。我没有发现错误,因为一切正常,我的 VC 已按预期解除分配。

我的问题:将这两种方法混合使用会产生什么后果?

最佳答案

-presentViewController:animated:completion:-pushViewController:animated: 意思不同。前者说“呈现这个另一个 View Controller 以取代你自己”。后者表示“在您内部显示这个其他 View Controller ,作为您控制的列表的一部分”。

所以这是关于谁被认为负责过渡后的显示。在前一种情况下,导航 Controller 交出控制权。在后者中,它保留控制权。

前一个功能由 UIViewController 提供。后者特定于 UINavigationController

因为两个 Action 截然不同,所以相反的 Action 是分开的。导航 Controller 可以捕获 dismissViewController:... 并检查命名 Controller 的呈现方式,分支到父类(super class)或 pop... 但任务的合并将是从设计和维护的角度来看没有吸引力。

由于导航 Controller 不 promise 将一件事映射到另一件事,并且 UIViewController 不 promise 如果您传递的 Controller 之前没有出现任何特定行为,我认为您问题的字面答案是:将这两件事混合在一起的结果是未定义的行为。

关于ios - 错误编程的后果 : dismissViewController vs popViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19668328/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com