首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 13 UISplitView问题

iOS 13 UISplitView问题
EN

Stack Overflow用户
提问于 2019-08-04 19:23:17
回答 8查看 3.7K关注 0票数 8

在iOS 13 Beta 5上,我的UISplitView在iPhones上有问题。

我的应用程序从splitview的细节视图开始,而不是从我的主视图开始(看图片)

有人知道我如何在iOS 13下解决这个问题吗?在iOS 12上,一切都像魅力一样,☹️

赛巴斯蒂安

编辑:

很抱歉,我的回答太迟了,我去了一次没有互联网的短假期旅行:/

我的班级看起来是这样的:

代码语言:javascript
复制
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
    }

}

我认为这看起来是解决这个问题的正常程序:/

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2019-08-19 21:32:43

我也有过同样的问题。

经过一番调查,viewDidLoad似乎为时已晚,无法将其设置为所有可见的。

我子类化了UISplitViewController,并在awakeFromNib方法中更改了设置。现在,它正在如预期的那样运作。

票数 10
EN

Stack Overflow用户

发布于 2019-08-27 22:12:34

艾克斯生命的回答帮助了我。通过使用调试器,我注意到主视图控制器中没有调用viewDidLoad。因此,从来不设置委托,因此从来不调用折叠方法。

我通过在awakeFromNib()中设置委托来修正这个问题:

代码语言:javascript
复制
override func awakeFromNib() {
    self.splitViewController?.delegate = self
}

现在调用splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool,如果返回true,将显示主服务器。

票数 6
EN

Stack Overflow用户

发布于 2019-09-17 22:27:38

沃伦·米尔沃德的回答帮助我朝着正确的方向前进,但实际上我让它与viewDidLoad()合作。

最后,我为UISplitViewController使用了一个子类,并在viewDidLoad()中设置了所需的值以及这里的委托调用。

代码语言:javascript
复制
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
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57349592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档