我在使用 Split View Controller 时遇到了一个奇怪的问题,并且我已经能够在全新的应用程序中非常轻松地重现该问题。如果您将 iPhone 6 Plus 旋转为横向,主视图 Controller 和详细 View Controller 在屏幕上可见,但如果您随后旋转回纵向并切换选项卡然后旋转到横向,则详细 View Controller 将完全灰色,好像什么都没有。这将记录到控制台:<Error>: CGImageCreate: invalid image size: 0x0
我想知道您是否知道原因或可以采取哪些措施来修复此错误。
设置是 UITabBarController
三个选项卡,每个选项卡都是默认的 UISplitViewController
通过 Interface Builder 拖出。子类 UISplitViewController
并将 3 个 Split View更改为该类。在 viewDidLoad
中将 Split View Controller 的委托(delegate)设置为 self .然后从 splitViewController:collapseSecondaryViewController:ontoPrimaryViewController:
返回 YES .这对其进行了设置,以便在旋转回纵向而不是默认的详细信息 View Controller 后,主视图仍然可见。
重现错误:在 iPhone 6 Plus 上以纵向启动应用程序,旋转到横向,旋转回纵向,点击第二个或第三个选项卡,旋转到横向
错误:细节 View Controller 是完全灰色的
预期:如果您启动应用程序,点击不同的选项卡,然后旋转到横向,详细 View Controller 应该会像往常一样显示
附加信息:一旦发生这种情况,如果您旋转回纵向,然后返回到不同的选项卡,它也会在旋转到横向时显示灰色细节 Controller 。该应用程序必须强制退出并重新启动才能在横向中查看这些 Split View。
现在我注意到如果您打开应用程序并显示第一个选项卡,如果您将 iPhone 6 Plus 旋转到横向,它实际上会初始化选项卡栏 Controller (5 个附加 View Controller )中的每个主视图 Controller 和详细 View Controller - 它停在viewDidLoad
中设置的断点如果您将这些 Controller 子类化。我希望它只为屏幕上显示的 Split View Controller 初始化详细 View Controller 。我想知道这是否是预期的行为?我相信它可能与这个错误有关。
我的问题是,这个灰屏是 iOS 中的一个错误,还是这个设置有问题,或者有什么办法可以防止这种情况发生?
它应该如何出现:
执行上述步骤时的显示方式:
最佳答案
在我的 Multiple Detail Views 上工作时,我自己遇到了一些奇怪的事情。样本。我实际上在 6+ 模拟器中显示了 2 个 TableView 而不是 1 个 TableView 和 1 个详细 View 。我可以通过从 separateSecondaryViewControllerFromPrimaryViewController
返回我的详细 View Controller 来修复它SplitViewController delegate的方法| .
我的代码是这样的:
func splitViewController(splitViewController: UISplitViewController, separateSecondaryViewControllerFromPrimaryViewController primaryViewController: UIViewController!) -> UIViewController? {
if let primaryAsNavController = primaryViewController as? UINavigationController {
if let topAsTableViewController = primaryAsNavController.topViewController as? TableViewController2 {
//Return Navigation controller containing DetailView1 to be used as secondary view for Split View
return (UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("detail1Nav") as UIViewController)
}
}
return nil
}
对我来说,只有当 TableView2 是 TopViewController 时才会发生这种情况,所以我正在检查它,如果为真,我正在初始化我想要的 DetailViewController 并返回它。
希望这种方法也适用于您。
关于rotation - 旋转 iPhone 6 Plus 会导致灰色细节 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26596703/