【发布时间】:2015-01-24 06:52:09
【问题描述】:
我一直在寻找解决方案很长一段时间,但我仍然看不到最好的解决方案是什么: 我正在尝试以编程方式交换视图控制器,情节提要中没有任何内容,纯 swift 文件。
据我所知,presentViewController() 只是创建了一个“模态”,这会导致之前的 ViewController 留在内存中(对此进行了测试,deinit 永远不会为第一个控制器触发)。我找到的解决方案是切换 rootViewController:self.view.window?.rootViewController = ViewController2() -> 这会触发第一个的 deinit。
虽然这个解决方案在理论上可行,但我想知道......
- 是否有一些推荐的方法或最佳实践如何以编程方式执行此操作?还是真的只是为了改变
viewRootController的价值? - 您如何构建您的应用程序?您是否使用一个 ViewController 并交换视图?或者您将其他 ViewController 呈现为带有 presentViewController 的模态? (我对此完全陌生,似乎找不到任何好的来源;大多数文章都涉及故事板)
非常感谢!
编辑:我要补充一点:我的测试应用程序不应该为不同的视图控制器提供任何类型的导航(没有标签,也没有类似的东西)。它基本上像 screen1->screen2->screen3->screen4 一样工作。如果按下重置按钮,它会返回到 screen1。我只是对交换 ViewController 感兴趣,没有别的。
【问题讨论】:
-
这真的取决于您希望如何在应用中构建导航
标签: ios swift uiviewcontroller