拆分视图控制器偶尔会在 iOS 13 上的 iPhone 上显示详细视图
Posted
技术标签:
【中文标题】拆分视图控制器偶尔会在 iOS 13 上的 iPhone 上显示详细视图【英文标题】:Split View controller occasionally showing detail view on iPhone on iOS 13 【发布时间】:2019-11-12 05:04:25 【问题描述】:我们有一个带有拆分视图控制器的通用应用程序,这些控制器嵌入在不同的选项卡中。我们在 iPhone 上的 ios 13 上观察到,在切换选项卡时,偶尔会显示详细视图而不是主视图。我们无法挑选出这种模式,这只是随机发生,但经常发生。
我已经提到了UISplitViewController in portrait on iPhone shows detail VC instead of master 和 Open UISplitViewController to Master View rather than Detail 我们正在为 SplitViewController 实现委托。该委托也被调用。
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://imgur.com/eWO3RQM
【问题讨论】:
即使在 iOS 15 上我仍然看到这种情况发生。也无法可靠地重现它。 @TylerJames 所以当应用程序进入后台时,我最终在应用程序委托中设置了标志,然后这样做 // 如果它只是 iPhone 并从后台导航,那么委托方法不会'没有被调用,我们必须手动弹出控制器 if userInterfaceIdiom != .pad, let isComingFromBackground = (UIApplication.shared.delegate as?AppDelegate)?.isComingFromBackground, isComingFromBackground, let nav = self.viewControllers.first as? UINavigationController nav.popToRootViewController(animated:false) 【参考方案1】:在awakeFromNib
中再次设置UISplitViewController
delegate
。从 iOS 13 到至少 13.3 似乎存在一些操作顺序问题。我遇到了完全相同的问题,并根据another answer 实现了这个提示,这似乎有效。
【讨论】:
以上是关于拆分视图控制器偶尔会在 iOS 13 上的 iPhone 上显示详细视图的主要内容,如果未能解决你的问题,请参考以下文章