我想将 viewController 保留在内存中,并稍后通过调用 vc3 和 vc6 示例以自定义顺序显示它们,而无需再次初始化它们,它们必须保持相同的状态。我曾想过使用 navigationController ,但我不想要导航栏,并且我不确定是否可以按自定义顺序调用 viewcontroller 。我尝试将 viewController 放入全局数组中,但是当我调用它们时出现错误:“应用程序试图以模态方式呈现事件 Controller ”。您对此有何看法,我如何处理我的 View Controller 并显示它们而不再次初始化它们。我一直在听。
我读到在 IOS 中我们必须回收 View ,所以我有一个问题。处理回收 View 的最佳方法是什么。如果我想为我的用户提供相同的 View ,而不初始化负责该 View 的 View Controller 。我必须如何做到这一点,采用的最佳结构选择是什么.. 有一个大 View Controller 并使用 addsubview removesubview 处理 View ...或每个 View 类型有多个 View Controller ,在这里我不知道如何回收和跟踪我的 View Controller (我不想使用导航 Controller )。
最佳答案
首先,您可以在导航 Controller 中隐藏导航栏:
self.navigationBarHidden = true
(对于 UINavigationController)self.navigationController?.navigationBarHidden = false
(对于 UINavigationController 内的 UIViewController)
在您的情况下,存储在全局数组中也是可以的(但最好有辅助类),因此虽然您的 UIViewControllers
将位于内存中 - 您可以重用它们。
您的问题与导航有关(好的答案在这里 - https://stackoverflow.com/a/7534019/1830598 )。因此,您必须通过再次取消并呈现 UINavigationController 来管理此订单,或者找到其他解决方案。
您的用例示例:
- 使用任何 ViewController 呈现
UINavigationController
- 将任何 View Controller 存储为
storedViewController
- 在
UINavigationController
的rootViewController
处(显示的)添加代码:self.navigationController?.viewControllers = [storedViewController, self]
< - 现在您将位于
UINavigationController
处的第二个 View Controller ,按回键即可到达storedViewController
关于Swift 如何模仿 navigationController ,没有导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595844/