iOS 14 中的 UISplitViewController 在横向模式下按预期工作,但在纵向模式下不起作用
UISplitViewController in iOS 14 works as intended in landscape mode, but not in portrait
我试图在我的 iOS14 应用程序中保留 iOS13 和 UISplitViewController 的功能。在横向模式下一切都按预期工作(两个并排视图控制器),但是如果我以纵向启动应用程序(拆分视图控制器是初始视图控制器),当详细视图控制器中的变量为 nil 时我的条件逻辑显示主视图控制器无法正常工作并且导航栏(栏按钮项目,主视图控制器和详细视图控制器的大标题)不可见。
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
if (secondaryViewController is UINavigationController) && (((secondaryViewController as? UINavigationController)?.topViewController) is DetailViewController) && (((secondaryViewController as? UINavigationController)?.topViewController as? DetailViewController)?.dict == nil) {
return true
} else {
return false
}
}
奇怪的是,如果我以横向模式启动应用程序,然后切换为纵向模式,标题和栏都在那里,一切都按预期进行。这似乎是首次以纵向模式启动时出现的问题。
解决方案是根据需要使用新的委托方法 topColumnForCollapsingToProposedTopColumn
和 return .primary
或 .secondary
。
我找到了另一种方法来完成这个:
- 打开你的
Main.storyboard
- 右键单击您的
SplitViewController
- 从“
compact view
”单击并拖动一个新关系到您想要的视图控制器。
对我来说,这意味着我现在有 2 个关系从 SplitViewController
到我的主视图控制器(2 个关系 segues:“master view controller”和“compact view controller”)。但是,嘿,现在可以了。 None 无论我尝试什么,委托的东西都对我有用。
归根结底,Split View Controller 似乎有一个 属性 视图控制器以紧凑模式显示。您可以在故事板中设置它,这将决定在紧凑屏幕中显示哪个视图。
我试图在我的 iOS14 应用程序中保留 iOS13 和 UISplitViewController 的功能。在横向模式下一切都按预期工作(两个并排视图控制器),但是如果我以纵向启动应用程序(拆分视图控制器是初始视图控制器),当详细视图控制器中的变量为 nil 时我的条件逻辑显示主视图控制器无法正常工作并且导航栏(栏按钮项目,主视图控制器和详细视图控制器的大标题)不可见。
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
if (secondaryViewController is UINavigationController) && (((secondaryViewController as? UINavigationController)?.topViewController) is DetailViewController) && (((secondaryViewController as? UINavigationController)?.topViewController as? DetailViewController)?.dict == nil) {
return true
} else {
return false
}
}
奇怪的是,如果我以横向模式启动应用程序,然后切换为纵向模式,标题和栏都在那里,一切都按预期进行。这似乎是首次以纵向模式启动时出现的问题。
解决方案是根据需要使用新的委托方法 topColumnForCollapsingToProposedTopColumn
和 return .primary
或 .secondary
。
我找到了另一种方法来完成这个:
- 打开你的
Main.storyboard
- 右键单击您的
SplitViewController
- 从“
compact view
”单击并拖动一个新关系到您想要的视图控制器。
对我来说,这意味着我现在有 2 个关系从 SplitViewController
到我的主视图控制器(2 个关系 segues:“master view controller”和“compact view controller”)。但是,嘿,现在可以了。 None 无论我尝试什么,委托的东西都对我有用。
归根结底,Split View Controller 似乎有一个 属性 视图控制器以紧凑模式显示。您可以在故事板中设置它,这将决定在紧凑屏幕中显示哪个视图。