在不创建新实例的情况下切换视图控制器
Switch view controller without creating new instance
在我的应用程序中使用三个视图控制器。我刚刚使用故事板 segues 创建了导航。在使用 segues 导航到其他视图时,为视图控制器创建新实例。考虑从 A->B-C 的导航。如何从已经保留在内存中的 C 导航到 A 或 B?
注意:这里我无法使用 dismissviewcontroller,它将删除 C 的实例。这样我的导航应该是已经创建的实例。
根据你的描述,你应该有一个自定义控制器来管理呈现的视图控制器并允许视图控制器在彼此之间切换 - 有点像自定义标签栏控制器,但没有可见的标签栏...
此自定义控制器将在第一次按需创建视图控制器,然后将它们存储为实例变量,以便下次请求它们时可以重用它们。
在这个模型中你没有 'back' 的概念,你只有当前呈现的视图控制器和一些你可以切换到的其他视图控制器。
如果你想去 A 你可以随时使用
[self.navigationController popToRootViewControllerAnimated:YES];(It will take programming control to root of navigation controller which is A in your case)
万一你想去B
[self.navigationController popViewControllerAnimated:YES];
(它只会弹出当前视图控制器)
在我的应用程序中使用三个视图控制器。我刚刚使用故事板 segues 创建了导航。在使用 segues 导航到其他视图时,为视图控制器创建新实例。考虑从 A->B-C 的导航。如何从已经保留在内存中的 C 导航到 A 或 B? 注意:这里我无法使用 dismissviewcontroller,它将删除 C 的实例。这样我的导航应该是已经创建的实例。
根据你的描述,你应该有一个自定义控制器来管理呈现的视图控制器并允许视图控制器在彼此之间切换 - 有点像自定义标签栏控制器,但没有可见的标签栏...
此自定义控制器将在第一次按需创建视图控制器,然后将它们存储为实例变量,以便下次请求它们时可以重用它们。
在这个模型中你没有 'back' 的概念,你只有当前呈现的视图控制器和一些你可以切换到的其他视图控制器。
如果你想去 A 你可以随时使用
[self.navigationController popToRootViewControllerAnimated:YES];(It will take programming control to root of navigation controller which is A in your case)
万一你想去B
[self.navigationController popViewControllerAnimated:YES];
(它只会弹出当前视图控制器)