问题描述
我正在实施 iOS 14 中引入的新 UISplitViewController API。当应用程序处于常规模式时,我有一个 .doubleColumn 布局,主视图是用于导航的 UICollectionView 和用于辅助视图的相应 UIViewControllers。 对于 .compact 布局,我使用的是 UITabBarController。
现在我想实现当布局从常规变为紧凑时的导航状态恢复,反之亦然。我已经观看了相应的 WWDC 2020 视频 https://developer.apple.com/videos/play/wwdc2020/10105/,他们在其中讨论了状态恢复实现的样子。缺少的是用于检测布局更改的实际方法。
我已经发现我可以使用 splitViewController(_ svc: UISplitViewController,topColumnForCollapsingToProposedTopColumn proposedTopColumn: UISplitViewController.Column)
方法来检测 SplitVC 何时更改为 .compact
模式。
以及当 SplitVC 从 .compact 变为 .regular 时的 splitViewController(_ svc: UISplitViewController,displayModeForExpandingToProposedDisplayMode proposedDisplayMode: UISplitViewController.DisplayMode)
方法。
现在我的问题。当我想更改 SplitVC 的辅助视图控制器时,在后一种委托方法中,为了选择与 TabBar(.compact 模式)中当前可见的视图控制器匹配的正确视图控制器,我的应用程序因以下错误而崩溃留言。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',reason: 'Mutating UISplitViewController with -setViewController:forColumn: is not allowed during a delegate callback.'
当我不能在委托方法中使用 setViewController(_ vc: UIViewController?,for column: UISplitViewController.Column)
时,我应该如何在更改回 .regular 模式时准备 SplitVC?
我找不到任何关于此的官方代码示例或文档。感谢您在这方面的任何帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)