Минимальный иллюстративный проект Xcode для этого доступен на github .
В моем UIWindow, когда я добавляю второй (и последующий) UITableView как подпредставления, они не вращаются должным образом и, следовательно, появляются вбок Это проверено только в симуляторе. Вот небольшой код для вас:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
ShellTVC* viewA = [[ShellTVC alloc] initWithTitle:@"View A"];
ShellTVC* viewB = [[ShellTVC alloc] initWithTitle:@"View B"];
// The first subview added will rotate to landscape correctly.
// Any subsequent subview added will not.
// You may try this by various commentings and rearranging of these two statements.
[window addSubview:[viewA tableView]];
[window addSubview:[viewB tableView]];
[window makeKeyAndVisible];
}
viewB появляется сбоку. Закомментируйте addSubview для viewB, и viewA появится правильно. Сделайте это только для viewA, и viewB появится правильно.
Я не создаю эти UITableViewControllers через NIB, хотя UIWindow есть.
Если вам интересно, ShellTVC - это UITableViewController и реализует этот метод:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
Кроме того, я установил для UIInterfaceOrientation в файле plist значение UIInterfaceOrientationLandscapeLeft.
Вероятно, связанные - и без ответа - ТАК вопросы здесь и здесь .