Swift如何模仿navigationController,没有导航栏

时间:2016-06-02 15:16:52

标签: swift navigation navigationcontroller

我希望将viewController保留在内存中并稍后通过示例调用vc3以自定义顺序显示它们,并且在vc6之后再没有初始化它们,它们必须保持相同的状态。我曾经想过要使用navigationController,但我不想要导航栏而且我不是因为我可以按自定义顺序调用viewcontroller。我试图将viewController放在全局数组中,但是当我调用它们时,我有一个错误:'应用程序尝试以模态方式呈现一个活动控制器'。你怎么看待这个,我如何处理我的viewControllers并显示它们而不再重新初始化它们。我一直在听。

我已经读到在IOS中我们必须回收视图,所以我有一个问题。处理循环视图的最佳方法是什么。如果我想为我的用户提供相同的视图而不初始化viewcontroller对此视图负责。如何做到这一点,采用什么是最好的结构选择.. 有一个大的viewcontroller和句柄视图与addsubview removedubview ...或每个视图类型的许多viewcontroller,这里我不知道如何回收和保持我的viewcontroller的跟踪(我不想使用导航控制器)。

1 个答案:

答案 0 :(得分:0)

首先,您可以隐藏导航控制器中的导航栏:

  • self.navigationBarHidden = true(适用于UINavigationController)

  • self.navigationController?.navigationBarHidden = false(对于UINavigationController中的UIViewController)

在你的情况下你也可以存储在全局数组中(但是为此设置帮助类更好),所以当你的UIViewControllers将在内存中时 - 你可以重用它们。

你的问题与导航有关(好的答案在这里 - https://stackoverflow.com/a/7534019/1830598)。所以你必须通过再次解雇和呈现UINavigationController或者找到另一个解决方案来管理这个订单。

您的用例示例:

  1. 使用任何ViewController
  2. 显示UINavigationController
  3. 将所有视图控制器存储为storedViewController
  4. rootViewController UINavigationController(已提交)添加代码:self.navigationController?.viewControllers = [storedViewController, self]
  5. 现在,您将出现在UINavigationController的第二个视图控制器处,按回来后您将转到storedViewController