我有一个主分割视图控制器(主 - 细节视图),但我想交替显示另一个分割视图控制器并在它们之间进行转换。
所以我目前正在做的是当我在第一个splitview的详细信息窗格上按下按钮时,它会更改splitviewcontroller属性的控制器。
self.splitViewController.viewControllers = vc.splitViewController.viewControllers;
现在我想从新加载的控制器中显示原始的splitview。我能够通过这段代码实现这一目标:
HomeLeftDetailViewController* mc = [storyboard instantiateViewControllerWithIdentifier:@"LeftViewController"];
UIViewController* dt = [storyboard instantiateViewControllerWithIdentifier:@"RightViewController"];
self.splitViewController.viewControllers = [[NSArray alloc]initWithObjects:mc, dt,nil];
我认为这不是一种干净的方法。
有什么想法吗?
更新
这就是我修复它的方法。
我知道这不是一个好的解决方案,但它可行,但后来我可能想要改善这可能存在的内存问题。
这是在第二个SplitView控制器的按钮操作中编写的代码
HomeViewController* hvc = [storyboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
UINavigationController *kkc = [hvc.viewControllers objectAtIndex:0];
UIViewController *kkc2 = [hvc.viewControllers objectAtIndex:1];
// HomeLeftDetailViewController* mc = [storyboard instantiateViewControllerWithIdentifier:@"LeftViewController"];
// dt = [storyboard instantiateViewControllerWithIdentifier:@"Profile"];
self.splitViewController.viewControllers = [[NSArray alloc]initWithObjects:kkc, kkc2,nil];
HomeScreen是第一个splitview控制器视图的标识符。
我假设HomeViewController* hvc = [storyboard instantiateViewControllerWithIdentifier:@"HomeScreen"];
创建主详细信息视图,但self.splitViewController.viewControllers = hvc.viewControllers
仅指定指针并在视图取消屏幕时被销毁。
如果我找到更多要分享的东西,我会更新相关内容。
答案 0 :(得分:0)
您可能会考虑使用顶级视图控制器(通用)来处理启动两个拆分视图控制器。然后,切换vc的按钮可以要求顶级控制器关闭当前的分割vc并启动另一个。使用segue可确保您的控制器有效地使用内存(在需要时实例化,在屏幕外时取消分配)。这也是好事,你可以在故事板中链接几乎所有内容。
对于通用顶级,您可以使用导航VC,因为您可以通过工具栏,后退按钮(可选)等获得一些便利。
祝你好运,达明