我正在尝试在我的应用程序中仅使用一个UISplitViewController(其他人使用导航控制器和不同的ViewControllers)。
我在MainWindow.xib中添加了SplitViewController(这是我可以使它工作的唯一方法)但是当调用didFinishLaunchingWithOptions时我不会将它添加到窗口中,因为它通常是这种情况,因此SplitViewController保持隐藏状态。
当我点击选项卡时,我会在委托窗口中调用一些代码来隐藏导航控制器并将SplitViewController放在适当位置:
[window addSubview:splitViewController.view];
如果iPad处于横向模式,SplitViewController仍然认为它出于某种原因处于纵向模式,并且根和细节视图控制器的框架错误。如果我开始旋转iPad,那么一切正常。这只是最初的错误调用。
看起来SplitViewController没有得到初始横向旋转的通知,因为它是隐藏的。
在第一次调用期间,根控制器的帧矩为320 x 980,如果iPad旋转为纵向,然后返回横向模式,则框架矩形变为320 x 724。
错误大小的问题是它不会在根控制器中显示TableView中的最后一项。
我试图在根控制器的ViewDidLoad和ViewWillAppear中更改帧大小,但它没有改变任何内容。
非常感谢任何帮助。
答案 0 :(得分:1)
奇怪,在viewDidLoad方法中修复detailViewController的大小解决了这个问题。
self.view.frame = CGRectMake(321, 0, 703, 699);
我有完全相同的配置:一个tabBarController作为rootController,有一个splitViewController和几个viewControllers。
答案 1 :(得分:0)
也许这可以帮到你一点。
我有一个iPad应用程序,其标签栏包含多个标签/页面。其中一个页面使用分割视图控制器,左视图还包含导航控制器。轮换方面似乎工作正常。以下是我如何设置它:
MyLeftViewController *viewController = [[MyLeftViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[viewController release];
MyRightViewController *rightView = [[MyRightViewController alloc] init];
UISplitViewController *splitViewController = [[UISplitViewController alloc] init];
splitViewController.viewControllers = [NSArray arrayWithObjects:navController, rightView, nil];
[rightView release];
[navController release];
splitViewController.delegate = rightView;
[viewControllersArray addObject:splitViewController];
[splitViewController release];
...add other view controllers to viewControllersArray...
tabBarController.viewControllers = viewControllersArray;
[viewControllersArray release];
[window addSubview:tabBarController.view];