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

class DashboardTabBarController: UITabBarController {

    override func viewDidLoad() {
        //here

    }
 ...

}

推荐答案

UPDATE 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个指定选项卡栏界面每个选项卡内容的元素.The order of the view controllers in the array corresponds to the display order in the tab bar

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

Swift相关问答推荐

错误CGPathGetClientPoint:没有当前点.& '?

创建一个DeliverMacro,该DeliverMacro创建带有注入一致性的嵌入式 struct

如何在一个角色隔离类上编写自定义==实现?

如何将EnvironmentObject从UIKit视图控制器传递到SwiftUI视图

如何在realityKit中反转USDZ动画

在SwiftUI中判断选项时避免重复查看

UICollectionViewCompostionalLayout Collectionview单元格宽度在重新加载数据后未正确调整大小

在Swift中,将秒设置为0也等于将1添加到分钟

为什么自定义串行队列的目标是全局队列时,Swift中不会并发执行?

避免 `(())` 显式指定 Void 类型的枚举关联值

在这个使用 URLSession 的简单 case 中是否创建了一个强引用循环?

ScreenCaptureKit/CVPixelBuffer 格式产生意外结果

swift 是否遇到 Java 的 2gb 最大序列化大小问题?

Swift 全局函数列表

SwiftUI:决定键盘重叠的内容

响应 UITextField (UIViewRepresentable) 中的特定按键

P384 公钥获取IncorrectParameterSize

在视图中设置所有变量

修复 Swift 3 中的警告C-style for Statement is deprecated

如何使用 Swift 枚举作为字典键? (符合 Equatable)