我试图关闭一个模态 Controller ,然后通过按下第一个模态 Controller 上的按钮来呈现一个新的模型 Controller 。我试过这个:
dismiss(animated: true, completion: {_ in
self.navigateToAtmDetail(atmId:id)
})
但是一旦当前 View Controller 被关闭,它就会保持关闭状态并且不会导航到下一个 Controller 。此外,我们使用的是 nibs 而不是 Storyboard和 segues,所以我无法访问它们。知道如何关闭当前的模态视图 Controller 而不是呈现新的模态视图 Controller 吗?
最佳答案
我会尽量在这里给出一个更透彻的答案。在 iOS 中编程时,所有实例都必须从...其他实例创建。当我说实例时,我指的是已实例化的对象(已在计算机内存中创建的对象)。因此,无论何时使用 XCode 创建项目,都需要标记'初始 View Controller '。 这将是您创建的第一个实例。然后它用于产生其他实例。 Apple 选择这种架构的原因是出于安全原因(我认为......?如果他们有更好的答案,请纠正我)。您可以非常清楚地看到 View 的所有“实例”。您在 XCode 中运行程序时单击此按钮 .然后您可以看到 View 的层次结构。我做了一个简单的程序,点击一个按钮将加载不同的 View 。在这里我没有点击按钮,我只加载了一个 View 。 然而,在这里我点击了按钮并加载了下一个 View , .在顶部,他们都说 UIWindow。那是因为……(我希望你能猜到这部分!)它们都是从 UIWindow View 实例化的。不相信我?看一下这个!这是实际的 View 层次结构。 和 .所以,如果你不明白我的意思。您应该明白,只需阅读您的问题,就很明显您正试图从另一个您试图解雇的模型 Controller 实例化您的模型 Controller 。因此,如果模型 Controller 已被解雇,应该如何实例化另一个模型 Controller ?还要记住,最好只根据用途命名 Controller ,例如 MenuViewController、MainController 或 VideoController。模型这个词通常用在 MVC 中,它不应该用作 ViewControllers 名称的一部分。 (希望我听起来没有粗鲁大声笑,我曾经教过初中,所以这就是我教 XD 的方式)
关于ios - 关闭当前模态视图 Controller ,然后呈现新的模态视图 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47148762/