添加到选项卡栏控制器时,列样式 UISplitViewController 无法正常工作

Posted

技术标签:

【中文标题】添加到选项卡栏控制器时,列样式 UISplitViewController 无法正常工作【英文标题】:Column style UISplitViewController not working properly when added to a Tab bar controller 【发布时间】:2020-11-20 02:08:10 【问题描述】:

我尝试将具有三列样式的拆分视图控制器添加到 UITabBarController,它以折叠状态显示。当我使用旧样式的拆分视图控制器时,相同的代码可以正常工作。如何让 3 列拆分视图控制器正确显示在标签栏控制器上?

class TabBarController: UITabBarController 
    
    override func viewDidLoad() 
        super.viewDidLoad()
        
//        This works fine ????‍♂️
        let splitViewController = SplitViewController()
        splitViewController.viewControllers = [ UINavigationController(rootViewController: PrimaryViewController()) , UINavigationController(rootViewController: SecondaryViewController())]
        
//        let splitViewController = SplitViewController(style: .tripleColumn)
//        splitViewController.setViewController(UINavigationController(rootViewController: PrimaryViewController()), for: .primary)
//        splitViewController.setViewController(UINavigationController(rootViewController: SecondViewController()), for: .secondary)
//        splitViewController.setViewController(UINavigationController(rootViewController: SupplementaryViewController()), for: .supplementary)
//        splitViewController.show(.primary)
//        splitViewController.show(.secondary)
//        splitViewController.show(.supplementary)
        
        splitViewController.title = "First"
        
        let secondViewController = SecondViewController()
        secondViewController.title = "Second"
        
        setViewControllers([
            splitViewController,
            secondViewController
        ], animated: false)
    

这里是项目的链接:https://github.com/anirudhbandi96/SplitViewTest

这就是新的三列拆分视图控制器的外观

这是旧的 2 列拆分视图控制器的外观

【问题讨论】:

你有没有想过这个问题? 【参考方案1】:

我什至无法让第 2 列在 UITabBarController 中工作。但是,如果我只是创建一个新的 UIViewController,将 UISplitViewController 作为 childViewController 添加,那么一切正常。

class MyViewController: UIViewController 

    let split = UISplitViewController(style: .doubleColumn)

    override func viewDidLoad() 
        super.viewDidLoad()
        addChild(split)
        view.addSubview(split.view)
        // add in your constraints to fix to same size here
        // -- here --
        vc.didMove(toParent: self)
    

 

【讨论】:

以上是关于添加到选项卡栏控制器时,列样式 UISplitViewController 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

连接到选项卡栏控制器时,TableView 不会切换到详细视图

以编程方式将选项卡栏控制器添加到当前 App Flow

在更多选项卡上时,iOS 7 选项卡栏图标暂时消失

将浮动操作按钮添加到选项卡栏控制器内的视图控制器

如何在保留选项卡栏的同时将子视图控制器添加到选项卡式视图控制器?

即使选项卡按钮无法立即访问该屏幕,也将选项卡栏添加到所有屏幕