Swift设置tabbar

指定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地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值