3

根据 Apple 关于 UISplitViewController 的文档(在新的 iPad 3.2 SDK 中),看起来他们打算让您仅将其用作应用程序的根控制器。换句话说......它看起来像你不能将 UISplitViewController 推到 UINavigationController 上,因为显然 UINavigationController 需要保存拆分视图。

谁能确认这是否是 UISplitViewController 的真正限制?我希望在我的 UINavigationController 层次结构中的几个级别的应用程序中使用拆分视图,但除非有办法,否则我似乎无法做到这一点。

谢谢!

4

5 回答 5

5

每当我尝试以模态方式呈现 UISplitViewController 时,我的应用程序就会崩溃。

于 2010-04-05T17:16:03.047 回答
2

这是一篇旧帖子,但我发现它可以帮助我以不同的方式思考,这就是我解决问题的方法。

我以 splitViewController编程方式创建了我的。然后我用一个数字标记它,并将它作为子视图添加到我当前的视图中。


FirstViewController* firstView = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease];    
SecondViewController* secondView = [[[SecondViewController alloc]  initWithNibName:@"SecondViewController" bundle:nil] autorelease];        
UISplitViewController* splitVC = [[UISplitViewController alloc] init];
[splitVC setDelegate:secondView];    
splitVC.viewControllers = [NSArray arrayWithObjects:firstView, secondView, nil];    
splitVC.view.tag = 99;    
[self.view addSubview:splitVC.view];

之后,splitView显示,但要摆脱它,我必须从视图中删除它,所以我在viewcontrollers. 在主视图控制器中,我添加了观察者。(注意:主视图控制器不是splitViewController它的视图或其中之一,它是加载的视图控制器splitViewController

NSNotificationCenter *splitViewObserver = [NSNotificationCenter defaultCenter];
[splitViewObserver addObserver:self selector:@selector(removeSplitView) name:@"removeSplitView" object:nil];

在选择器“ removeSplitView”中,我将当前视图的所有子视图放入 for 循环中,并搜索带有标签 99 的 UIView 类对象并将其从超级视图中删除。

NSArray *subviews = [self.view subviews];

for (int i = 0; i < [subviews count]; i++) {
    if ([[subviews objectAtIndex:i] isKindOfClass:[UIView class]]) {
        UIView *tempView = [subviews objectAtIndex:i];
        if (tempView.tag == 99) {
            [[subviews objectAtIndex:i] removeFromSuperview];
        }
    }
}

ViewController在 firstView 中,我有一个名为 done 的方法,它发布主要正在观察的通知。

-(IBAction) done:(id)sender {       
    [fileSelectedNotification postNotificationName:@"removeSplitView" object:self];    
}

您还必须fileSelectedNotification在您的应用程序中创建某个位置。我是通过viewDidLoad. 它看起来像这样。

fileSelectedNotification = [NSNotificationCenter defaultCenter];

我当然也添加了这个

NSNotiicationCenter *filesSelectedNotification;

到 this 的 .h 文件viewController

因此,当我按下完成按钮(这是我的应用程序上的条形按钮)时,它会splitViewController从视图中删除。

工作正常。我只是从阅读文档中得到了这一切。

于 2011-11-03T11:12:40.350 回答
1

一点也不。例如,可以在层次结构的根部有一个选项卡栏控制器,其中每个选项卡都有一个拆分视图控制器。

请参阅我关于将拆分视图控制器改装到标签栏界面的帖子:http: //markivsblog.blogspot.com/2010/04/retrofit-ipad-uisplitviewcontroller.html

于 2010-04-16T16:07:29.970 回答
1

Apple HIG 说你不能。意味着他们可能已经阻止你这样做,所以我怀疑你会得到它的工作。一些开发人员编写了自己的

于 2010-04-08T23:52:41.887 回答
0

仅供参考,我认为这是要走的路:见这个类似的问题

于 2013-11-14T16:35:37.457 回答