在iOS 13 Beta 5上,我的UISplitView在iPhones上有问题。
我的应用程序从splitview的细节视图开始,而不是从我的主视图开始(看图片)

有人知道我如何在iOS 13下解决这个问题吗?在iOS 12上,一切都像魅力一样,☹️
赛巴斯蒂安
编辑:
很抱歉,我的回答太迟了,我去了一次没有互联网的短假期旅行:/
我的班级看起来是这样的:
class MyClass : UITableViewController, UISplitViewControllerDelegate, UIPickerViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
if (UIDevice.current.userInterfaceIdiom == .pad){
navigationController?.navigationBar.isTranslucent = false
}
/*SplitView*/
splitViewController?.preferredDisplayMode = .allVisible
splitViewController?.delegate = self
self.definesPresentationContext = true
}
// SplitView
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
return true
}
}我认为这看起来是解决这个问题的正常程序:/
发布于 2019-08-19 21:32:43
我也有过同样的问题。
经过一番调查,viewDidLoad似乎为时已晚,无法将其设置为所有可见的。
我子类化了UISplitViewController,并在awakeFromNib方法中更改了设置。现在,它正在如预期的那样运作。
发布于 2019-08-27 22:12:34
艾克斯生命的回答帮助了我。通过使用调试器,我注意到主视图控制器中没有调用viewDidLoad。因此,从来不设置委托,因此从来不调用折叠方法。
我通过在awakeFromNib()中设置委托来修正这个问题:
override func awakeFromNib() {
self.splitViewController?.delegate = self
}现在调用splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool,如果返回true,将显示主服务器。
发布于 2019-09-17 22:27:38
沃伦·米尔沃德的回答帮助我朝着正确的方向前进,但实际上我让它与viewDidLoad()合作。
最后,我为UISplitViewController使用了一个子类,并在viewDidLoad()中设置了所需的值以及这里的委托调用。
class CustomSplitViewController: UISplitViewController, UISplitViewControllerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
self.preferredDisplayMode = .allVisible
}
func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
return true
}
}https://stackoverflow.com/questions/57349592
复制相似问题