UISplitViewController не вращается правильно - PullRequest
0 голосов
/ 08 марта 2012

Я знаю, что существует много дискуссий на эту тему о переполнении стека, но ни один из вопросов не имеет ответа, который мне подходит.

У меня есть 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, есть ли другие способы отладки проблем вращения?) ,

1 Ответ

1 голос
/ 09 марта 2012

Ах.Так часто часть процесса при задании вопроса заставляет вас ответить на него.

Мне пришлось подключить выход rootViewController в IB для MainWindow ~ ipad.xib к viewController в AppDelegate, затем все началосьработает.

Поэтому я не правильно установил UISplitViewController в качестве rootViewController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...