我有一个UISplitViewController,左侧是UINavigationController,右侧是另一个自定义VC。左边就像一个过滤系统,所以视图将被推/弹出。右侧显示实际细节。
我已经将UISplitViewController和UINavigationController子类化了。
我在IB中设置了这些,第三个VC作为Nav Controller的rootViewController(包含菜单选项列表)。在我的子类UISplitViewController的viewDidLoad中,我做
splitNavVc = [self.viewControllers objectAtIndex:0]; // get reference to nav controller for navigation
[self.splitNavVc pushViewController:recipeTable animated:true]; // push the first level view on by default. As though the user had selected an item from the menu controller at the nav controller's root.
这很好用,当我来点击顶级VC以再次在根目录显示菜单时:
[self.splitNavVc popViewControllerAnimated:true];
转换不仅仅是左侧窗格中的left->右侧,而是整个splitViewController的top-> bottom转换。奇怪的是,虽然全屏转换,但我的splitViewController的右侧实际上并没有改变。
就好像某个地方没有连接。
答案 0 :(得分:1)
最终使用popToRootViewControllerAnimated
解决。
我将导航控制器连接到它的根控制器,然后在我的故事板中为两个“向下钻取”视图创建了Segues。我使用performSegueWithIdentifier
推送ViewController并再次将其弹出我使用
[self.menuVc.navigationController popToRootViewControllerAnimated:true]; // menuVc is the rootViewController in this case