如何使用Swift在UITabBarController中以编程方式添加选项卡?

gijlo24d  于 2023-04-04  发布在  Swift
关注(0)|答案(3)|浏览(129)

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

class DashboardTabBarController: UITabBarController {

    override func viewDidLoad() {
        //here

    }
 ...

}
vi4fp9gy

vi4fp9gy1#

更新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;
    }
}
um6iljoc

um6iljoc2#

如果你在视图控制器中使用故事板,那么你必须在tabbarcontroller类中这样写。

class CustomTabbarController : UITabBarController {

    override func viewDidLoad() {

        super.viewDidLoad()

        let storyboard = UIStoryboard(name: "Main", bundle: nil)

        let firstViewController = FirstViewController()
        let navigationController = UINavigationController(rootViewController: firstViewController)
        navigationController.title = "First"
        navigationController.tabBarItem.image = UIImage.init(named: "map-icon-1")

       viewControllers = [navigationController]

        if let secondViewController = storyboard.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController {

            let navgitaionController1 = UINavigationController(rootViewController: secondViewController)
            navgitaionController1.title = "Second"
            navgitaionController1.tabBarItem.image = UIImage.init(named: "second-icon-1")
            var array = self.viewControllers
            array?.append(navgitaionController1)
            self.viewControllers = array

        }

    }
}
8ulbf1ek

8ulbf1ek3#

private lazy var tabbarViewController: UITabBarController = {
            let tabbarViewController = UITabBarController()
            tabbarViewController.setViewControllers([startVC,
                                                     offerVC,
                                                     benefitsVC,
                                                     shopVC,
                                                     recipesVC], animated: true)
            
            return tabbarViewController
        }()

window?.rootViewController = tabbarViewController

相关问题