github上提供了一个最小的说明性 Xcode 项目。
在我的 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 出现在侧面。注释掉 viewB 的 addSubview,viewA 正确显示。仅对 viewA 执行此操作,并且 viewB 会正确显示。
我不是通过 NIB 创建这些 UITableViewControllers,尽管 UIWindow 是。
如果你想知道,ShellTVC 是一个 UITableViewController,并实现了这个方法:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
另外,我已将 plist 文件中的 UIInterfaceOrientation 设置为 UIInterfaceOrientationLandscapeLeft。