我在 iOS 6.1.2 中的 iPad 上使用带有 UISplitViewController 的 UITabBarController(主视图控制器具有 UITableViewController)时遇到异常行为。如果我有多个选项卡,其中至少一个选项卡包含拆分视图控制器,并且在查看包含拆分视图控制器的选项卡时处于横向模式,然后我切换到另一个选项卡,然后移动到纵向模式,然后按包含拆分视图控制器的选项卡,接下来发生的是主视图控制器(表视图控制器)将在详细视图顶部显示表视图,而它显然不应该在那里。此行为仅在应用程序第一次加载时发生,但行为一致。
这个场景很容易通过简单地创建一个项目来重新创建,该项目是一个使用 iPad 设备和 Core Data 的拆分视图应用程序(没有使用 Core Data 就没有尝试过)。创建项目后,使用情节提要并添加标签栏控制器并使其成为初始视图控制器,然后将标签栏控制器的视图控制器序列添加到拆分视图控制器。之后,只需要在代码中进行一项更改,即更改 AppDelegate.m 中 application:didfinishLaunchingWithOptions 中的一行:
更改以下模板代码:
UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
至:
UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
UISplitViewController *splitViewController = [tbc.viewControllers lastObject];
也许我违反了一些 iOS 规则,并试图做一些我不应该做的事情?我想做的就是能够在几个不同的拆分视图控制器之间切换。建议?