UISplitViewController 在所有情况下都不是 "dismissing" 主视图控制器

UISplitViewController not "dismissing" master view controller in all situations

我有一个应用程序使用 UISplitViewController 作为其 window 的根视图控制器。该应用程序在制作时使用了 Master-Detail Xcode 模板。 master VC 是一个 UITableViewController,当它的其中一个单元格被按下时,它会使用

“隐藏”自己
self.splitViewController?.hide(.primary)

我们已将 VC 更新为 iOS 14 中引入的双列样式拆分视图控制器。大多数时候该方法确实隐藏主列;但是,有两种情况我们的主视图控制器无法通过此动画解除:

  1. iPhone
  2. 上的纵向模式
  3. 在iPhone横向模式下使用Zoomed“显示缩放”

iPad 我们没有遇到任何问题。 hide(:_) 方法的文档显示为

When you call this method, the split view interface transitions to the closest display mode available for the current split behavior where the specified column is hidden.

但很明显,在某些情况下,使用此方法不会隐藏主列。我四处寻找关于隐藏主视图控制器的解决方案,但大多数都缺乏相关性,因为它们已有很多年历史(有时 10 岁以上)and/or 不适用于 Swift 或 iOS 14使用新的拆分视图控制器样式。

为什么列不总是隐藏?如何确保主视图控制器消失?

我们的最终目标是首先展示辅助控制器...所以为什么不呢

self.splitViewController?.show(.secondary)

很有魅力