拆分视图控制器偶尔会在iOS 13上的iPhone上显示详细视图



我们有一个通用的应用程序,带有嵌入不同选项卡中的拆分视图控制器。我们观察到,在iPhone上的iOS 13上,在切换选项卡时,偶尔会显示详细视图而不是主视图。我们还没有能够挑出模式,这种情况只是随机发生的,但经常发生。

我已经在iPhone上的肖像中提到了UISplitViewController,显示了VC的细节,而不是master和打开UISplitViewController到主视图而不是细节,我们正在实现SplitViewControl的委托。此委托也会被调用。


class AppSplitViewController: UISplitViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.delegate = self
self.preferredDisplayMode = .allVisible
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
// MARK: - UISplitViewControllerDelegate Methods
extension AppSplitViewController: UISplitViewControllerDelegate {
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
return true
}
}

我不确定其他人是否也在iOS 13上观察到了这一点,但我不确定为什么即使我们有适当的委托实现,iOS也会偶尔显示详细视图。请注意,我们无法在iOS 12上复制此内容。这是视图堆栈https://i.stack.imgur.com/YrcKL.jpg

awakeFromNib中再次设置UISplitViewControllerdelegate。从iOS 13到至少13.3,似乎存在一些操作顺序问题。我遇到了完全相同的问题,并且由于另一个答案而实现了这个技巧,这个答案似乎有效。

如果您使用的是iOS 14或更高版本的,下面新引入的方法可能会有所帮助

func splitViewController(_ svc: UISplitViewController, topColumnForCollapsingToProposedTopColumn proposedTopColumn: UISplitViewController.Column) -> UISplitViewController.Column {
return .primary
}

最新更新