Я знаю, что существует много дискуссий на эту тему о переполнении стека, но ни один из вопросов не имеет ответа, который мне подходит.
У меня есть SplitViewController, который загружается в качестве корневого контроллера представления, и для обоих табличных представлений внутри SVC установлено значение AlwaysAutoRotate для возврата 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];
}
Вот раздел 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, есть ли другие способы отладки проблем вращения?) ,