一尘不染

如何以快速方式在UITabBarController中以编程方式添加选项卡?

swift

如何通过UIViewController扩展的任何类以编程方式创建选项卡:

class DashboardTabBarController: UITabBarController {

    override func viewDidLoad() {
        //here

    }
 ...

}

阅读 206

收藏
2020-07-07

共1个答案

一尘不染

更新SWIFT 5

如何以UITabBarController编程方式创建的一个示例如下所示:

首先,我们创建UIViewControllers标签栏界面的每个标签的内容。对于此示例,我们仅创建一个非常简单的示例。

class Item1ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = UIColor.green
        self.title = "item1"
        print("item 1 loaded")
    }
}

现在,UITabBarController

我们创建了UIViewControllers要显示在标签栏中的的新实例。然后,我们为创建的每个实例创建一个图标,然后创建一个数组,其中包含所有UIViewControllers为标签栏界面的每个标签指定内容的数组。
数组中视图控制器的顺序与选项卡栏中的显示顺序相对应

class DashboardTabBarController: UITabBarController, UITabBarControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        delegate = self
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        let item1 = Item1ViewController()
        let icon1 = UITabBarItem(title: "Title", image: UIImage(named: "someImage.png"), selectedImage: UIImage(named: "otherImage.png"))
        item1.tabBarItem = icon1
        let controllers = [item1]  //array of the root view controllers displayed by the tab bar interface
        self.viewControllers = controllers
    }

    //Delegate methods
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        print("Should select viewController: \(viewController.title ?? "") ?")
        return true;
    }
}
2020-07-07