按下按钮时如何关闭UISplitViewController

时间:2013-02-19 13:20:42

标签: iphone ios objective-c ipad uisplitviewcontroller

在我的iPad应用中。我正在研究UISplitViewController。在DetailViewController UISplitViewController中有按钮。按下该按钮时,它将导航到另一个视图控制器。在另一个视图控制器中,我不需要UISplitViewController。如何解雇UISplitViewController。我已经尝试了很多并用Google搜索,但我找不到任何解决方案。这是在浪费我的时间,所以如果有人参与其中,请指导我并发布示例代码。

我正在使用此代码

-(void)imgButtonpressed:(id)sender
{
    MenuItemsListViewController *menuview=[[MenuItemsListViewController alloc]initWithNibName:@"MenuItemsListViewController" bundle:nil];

    menuview.modelArray = imagesArray;
    menuview.image = [sender tag]*2;
    [self.navigationController pushViewController:menuview animated:YES];

}

2 个答案:

答案 0 :(得分:-1)

使用UISplitView时遇到了同样的问题。事实上,当我终于想出如何在rootviewcontroller之上推送splitview时,我仍然遇到了问题。

所以,我相信有很多新手都对这个问题感到沮丧。我试着通过这里的大量阅读来找出解决方案。

这就是我做的事情(你可以对任何其他观点做同样的事情):

这将解除splitview并推送另一个splitview:

SplitViewController *split = [[SplitViewController alloc]init];
    self.leftController = [[LeftViewController alloc]init];
    UINavigationController *leftNav = [[UINavigationController alloc]initWithRootViewController:leftController];
    self.rightController = [[RightViewController alloc]init];
    UINavigationController *rightNav = [[UINavigationController alloc]initWithRootViewController:rightController];
    split.viewControllers = [NSArray arrayWithObjects:leftNav,rightNav, nil];
    split.delegate = self.rightController;

    YourAppDelegate *delegate = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
    delegate.window.rootViewController = split;

第二个选项是:

NSMutableArray *allViewControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];

    [allViewControllers replaceObjectAtIndex:0 withObject:split];
    self.navigationController.viewControllers = allViewControllers;

希望这对那些偶然遇到同样问题的人有所帮助。

干杯!

答案 1 :(得分:-2)

Apple并不希望您将拆分视图控制器推入导航控制器。他们的指导说如果你使用UISplitViewController,它必须在你的应用程序中始终可见(因此你不能删除它),除了用模态视图控制器覆盖它。

如何以模态方式呈现viewcontroller?

MenuItemsListViewController *menuview=[[MenuItemsListViewController alloc]initWithNibName:@"MenuItemsListViewController" bundle:nil];

menuview.modalPresentationStyle = UIModalPresentationFullScreen;
[self.splitViewController presentViewController:menuview animated:YES completion:nil];

来源:How can we push UISplitVIewController to a UINavigationController