web-dev-qa-db-ja.com

迅速にUITabBarControllerにプログラムでタブを追加するにはどうすればよいですか?

UIViewControllerによって拡張されたクラスからプログラムでタブを作成する方法:

class DashboardTabBarController: UITabBarController {

    override func viewDidLoad() {
        //here

    }
 ...

}
26
gellezzz

PDATE Swift 5

UITabBarControllerをプログラムで作成する方法の一例は、次のようになります。

まず、タブバーインターフェイスの各タブのコンテンツとなるUIViewControllersを作成します。この例では、非常に単純なものを1つだけ作成します。

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

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

さて、UITabBarController

タブバーに表示するUIViewControllersの新しいインスタンスを作成します。次に、作成した各インスタンスのアイコンを作成し、タブバーインターフェイスの各タブのコンテンツを指定するすべてのUIViewControllersを含む配列を作成します。 配列内のView Controllerの順序は、タブバー内の表示順序に対応しています

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;
    }
}
54
mauricioconde

ViewControllersにストーリーボードを使用している場合、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

        }

    }
}
2
kalyani puvvada