ios如何从单一视图分割到分割视图控制器

时间:2013-11-29 12:05:02

标签: ios ios7 segue

我有两个模板视图(一个是单个视图,另一个是拆分视图控制器),每个视图都可以正常工作。所以我在单视图上放了一个按钮,然后在按钮上输入Push Segue,转到Split View Controller。当我按下按钮时,我发现一个崩溃,说不能从外部UI导航控制器使用推送。

好的,我将单个视图模板放入UI导航控制器,现在说:拆分视图控制器无法推送到导航控制器。

那么......我该怎么做?

谢谢!

5 个答案:

答案 0 :(得分:6)

而不是呈现splitviewcontroller尝试设置为rootviewcontroller。

self.view.window.rootViewController = splitViewController;

答案 1 :(得分:6)

在普通视图控制器中使用容器视图,覆盖整个查看区域,并且该容器视图具有嵌入视图控制器的嵌入segue

如果需要在它们之间进行通信,请覆盖UISplitViewController并将其放在viewDidLoad中:

YourLeftVC *masterViewController = (YourLeftVC *) [[self.viewControllers objectAtIndex:0] topViewController];
YourRightVC *detailViewController = [self.viewControllers objectAtIndex:1];

masterViewController.delegate = detailViewController;

答案 2 :(得分:1)

根据苹果文档https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/SplitViewControllers.html

拆分视图控制器必须始终是您创建的任何接口的根。 您必须始终从UISplitViewController对象安装视图作为应用程序窗口的根视图。

您可以在此处创建自定义分割视图。

答案 3 :(得分:0)

最糟糕的情况是,您可以创建第二个UIViewController来进行推送,并在其上创建一个以UISplitViewController为根的容器。

答案 4 :(得分:-2)

将你的segue设置为modal而不是push,应该这样做。

修改

实际上这不起作用。您可以尝试将splitView放在另一个故事板中,并在buttonClicked:方法中将其显示在代码中:

在SigleView.m中:

- (IBAction)buttonClicked:
{
    SplitViewController *splitVC = [[UIStoryboard storyboardWithName:@"SplitStoryBoard" bundle:nil] instantiateViewController];
    [self presentViewController:splitVC animated:YES completion:nil];
}

<强> EDIT2

之前写的内容也不起作用。我真的很想知道你是否可以提供一个splitViewController(即不能将它作为你的rootViewController)。

但你可以做些什么:

将您的splitView设置为应用程序的rootView,在启动时以模态方式显示您的singleView,并且只要您想解除它就让splitView具有控制权。与使用singleView呈现splitView的效果相同。