UISplitViewController无法正确旋转

时间:2012-03-08 02:16:33

标签: ios cocoa-touch ipad uitableview uisplitviewcontroller

我知道关于堆栈溢出这个主题有很多讨论,但没有一个问题有一个对我有用的答案。

我有一个SplitViewController作为根视图控制器加载,SVC中的两个tableviews都将ShouldAutoRotate设置为返回YES。

即使时钟/状态栏有效,SVC也不会正确地与iPad一起旋转。

<小时/> 的更新

在我的AppDelegate中,我注意到rootViewController在我设置之后才真正设置 - 不应该总是设置rootViewController吗? 这段代码:

    MyAppAppDelegate *appDelegate = (MyAppAppDelegate *)[[UIApplication sharedApplication] delegate];
    NSLog(@"RootViewController pre set: %@", appDelegate.window.rootViewController);
    [appDelegate.window setRootViewController:splitViewController];
    NSLog(@"RootViewController post set: %@", appDelegate.window.rootViewController);

记录为:

RootViewController pre set: (null)
RootViewController post set: <UISplitViewController: 0x88ad2d0>

这是否意味着我错误地认为SVC是根视图控制器?

另外,在IB中 - 窗口没有任何东西连接到rootViewController插座 - 这是一个问题吗?

<小时/>

这是SVC以编程方式制作的地方:

-(IBAction)makeStory:(id)sender{
 MakeSentenceTableViewController *detailViewController = [[MakeSentenceTableViewController alloc] initWithNibName:@"MakeSentenceTableViewController" bundle:nil];

    UISplitViewController *splitViewController = [[[UISplitViewController alloc] init] autorelease];

    UINavigationController *rootNav = [[[UINavigationController alloc] initWithRootViewController:makeStoryTableViewController]autorelease];

    UINavigationController *detailNav = [[[UINavigationController alloc] initWithRootViewController:detailViewController] autorelease];

    splitViewController.viewControllers = [NSArray arrayWithObjects:rootNav, detailNav, nil];
    splitViewController.delegate        = makeStoryTableViewController;

    MyAppAppDelegate *appDelegate = (MyAppAppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate.window setRootViewController:splitViewController];
}

以下是两个tableviews中的ShouldAutoRotate部分(它们在两者中都相同):

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {  
    NSLog(@"story idiom for rotate is iPad");
    return YES;
}

请帮我解决这个问题,以便SplitViewController正确加载 - 或者帮我解决一些调试技术(例如,我如何检查SVC是否在rootViewController中,还有其他调试旋转麻烦的方法吗?) 。

1 个答案:

答案 0 :(得分:1)

阿。因此,在提问时通常会有一部分过程让您自己回答。

我必须将IB中的rootViewController出口连接到MainWindow~ipad.xib到AppDelegate中的viewController,然后一切都开始工作了。

所以我没有正确地将UISplitViewController设置为rootViewController。