我已经从UITabBar转移到我的iPad应用程序上拆分视图。
视图控制器由主设备发送到细节,将它们放入UINavigationController。
// Detail manager called when a cell is selected on the master
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:_detailViewController];
UIViewController *mainNavigationViewController = [self.splitViewController.viewControllers objectAtIndex:0];
NSArray *viewControllers = [[NSArray alloc] initWithObjects:mainNavigationViewController, detailNavigationController, nil];
self.splitViewController.viewControllers = viewControllers;
现在,每次选择主控单元上的单元格时,详细视图上的导航控制器都从根开始。
相反,我希望标签栏控制器具有相同的行为:当您从一个选项卡移动到另一个选项卡时,将保留每个选项卡的导航堆栈。当您选择两次相同的选项卡时,导航堆栈将弹出到根视图控制器。
如何使用基于拆分视图的应用程序以正确的方式实现此目的?
答案 0 :(得分:1)
您应该为主表中的每个单元格创建一个导航控制器。点击一个单元格时,可以相应地进行切换。如果点击了所选单元格,则在可见导航控制器上调用popToRootViewController:animated:
。当然,您必须继承UISplitViewController
以保留对导航控制器的引用。您还必须创建一个MaterTableDelegate
来告诉您拆分VC,他应该更改细节方面的navcon。
答案 1 :(得分:0)
从Levi的建议开始,我实施了一个有效的解决方案。 总结一下:
UISplitViewController
UINavigationController
的公开引用UISplitViewController
子类的init内部初始化所有导航控制器及其各自的根UIViewControllers
UISplitviewcontroller
子类中声明的所有单元格中)都会显示在详细视图。我在详细信息管理器上设置了NSinteger
属性(在主单元格选择上设置),以告诉它在详细视图上显示哪个导航控制器。UITabBar
行为。希望这会对某人有所帮助。