UISplitViewController以编程方式,转换大师期间的奇怪行为 - > Swift 3

时间:2017-01-17 14:24:07

标签: ios uiviewcontroller uinavigationcontroller swift3 uisplitviewcontroller

我们在不使用故事板的情况下实施了UISplitViewController。我们的拆分视图控制器由主控制器和详细控制器组成,两者都单独包含在UINavigationController中。我们使用以下命令配置了拆分视图控制器:

  • set propery preferredDisplayMode = .allVisible
  • func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool { return false }

通过这样的设置,我们预计iPad将同时具有纵向和横向可见的主控制器和细节控制器。这很好用。对于iPhone,我们希望它的行为类似于常规的导航控制器,因此主机(在我们的案例表中)将首先显示,可能转换到细节屏幕并返回(使用导航栏)。对于转换主 - >详细信息,我们称为拆分视图控制器的方法:showDetailViewController(detailNavigationController)。有了这样的实现,即使我们设置了详细信息屏幕,我们也会得到一个奇怪的行为。出于某种原因,屏幕的顶部和底部也有一个空白区域。我们认为它是由包含细节控制器的“额外”导航控制器引起的。因此,每当我们转换master->细节时,我们会对iPad和iPhone进行不同的调用:

if isiPad() { showDetailViewController(UINavigationController(rootViewController: detailController, sender: self) } else if isiPhone() { showDetailViewController(detailViewController, sender: self) }

目前这对我们“有效”,但我们显然希望用更清洁的解决方案取而代之。

0 个答案:

没有答案