在SplitViewController中弹出一个ViewController

时间:2012-02-25 16:39:34

标签: objective-c ios uinavigationcontroller uisplitviewcontroller

我有一个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的右侧实际上并没有改变。

就好像某个地方没有连接。

1 个答案:

答案 0 :(得分:1)

最终使用popToRootViewControllerAnimated解决。

我将导航控制器连接到它的根控制器,然后在我的故事板中为两个“向下钻取”视图创建了Segues。我使用performSegueWithIdentifier推送ViewController并再次将其弹出我使用

[self.menuVc.navigationController popToRootViewControllerAnimated:true]; // menuVc is the rootViewController in this case