Swift设置tabbar

洪照
2023-12-01

指定RootViewControll

  window = UIWindow(frame: UIScreen.main.bounds)
        window?.backgroundColor = UIColor.white
       let tabbar = CQ_TabbarViewController.CustomTabBar()
        window?.rootViewController = tabbar
        window?.makeKeyAndVisible();
lass CQ_TabbarViewController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()


    }

     class func CustomTabBar()->UITabBarController {
        let viewControllerArray = ["CQ_HomeViewController","CQ_CommunViewController","CQ_QuestionViewController","CQ_OwnViewController"]
        let tabBarVC = CQ_TabbarViewController()

        let tabbarArray = ["首页","发现","问答","我的"]
        let titleArray = ["首页","发现","问答","我的"] 
        var index:Int = 0
        //循环像tabbarcontroller中添加对应的子控制器
        for str in viewControllerArray{

            let vc = NSClassFromString(str) as! UIViewController.Type
            //获取到对应的控制器类
            let viewcontroller = vc.self.init()
            //创建导航控制器
            let nav : UINavigationController = CQ_NavViewController(rootViewController: viewcontroller)
            tabBarVC.addChildViewController(nav)
            //设置对应的tabbaritem
            let normalStr:String = tabbarArray[index]
            let title:String = titleArray[index]
            let selectStr:String = normalStr+"Sele"
            nav.tabBarItem = UITabBarItem(title: title, image: CQ_ImageSource.getImgView(normalStr as NSString), selectedImage: CQ_ImageSource.getImgView(selectStr as NSString))
            nav.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.red], for: UIControlState.normal)
            nav.tabBarItem.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.orange], for: UIControlState.selected)
            index += 1
        }
        //设置tabbar的背景
        tabBarVC.tabBar.isTranslucent=false
        tabBarVC.tabBar.barStyle = .black
        tabBarVC.tabBar.barTintColor = UIColor(patternImage: UIImage(named: "Main_tabBar_background")!)
        tabBarVC.tabBar.backgroundImage = UIImage(named: "Main_tabBar_background")
        return tabBarVC   

    }

}

这里简单实现了设置tabbarController其中有一个重点就是let viewControllerArray = [“CQ_HomeViewController”,”CQ_CommunViewController”,”CQ_QuestionViewController”,”CQ_OwnViewController”]对应的控制器中一定要加上@objc(当前控制器的类名)

@objc()修饰的类可以被OC方法调用 我在上面调用了NSClassFromString这个OC的方法,所以调用Swift的类需要使用这个函数修饰
Demo github地址

 类似资料: