swift微博第2天(命名空間和控制器字符串)

  • 1.獲取命名空間并把字符串轉(zhuǎn)化為指定的類控制器對象
更改命名空間
   // 1.動態(tài)獲取命名空間
    let namespace = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
    
    // 2.將字符串轉(zhuǎn)換為類
    // 2.1.默認(rèn)情況下命名空間就是項目的名稱,但是命名空間的名稱是可以更改的
    let Clas: AnyClass? = NSClassFromString(namespace + "." + childControllerName)
    
    // 3.通過類創(chuàng)建對象
    // 3.1.將AnyClass 轉(zhuǎn)化為指定的類
    let vcClass = Clas as! UIViewController.Type
    
    // 4.通過class創(chuàng)建對象
    let vc = vcClass.init()
  • 2.搭建項目的源碼

    import UIKit
    
    class MainViewController: UITabBarController {
    
    override func viewDidLoad() {
    super.viewDidLoad()
    
    view.backgroundColor = UIColor.brown
    
    // 設(shè)置當(dāng)前控制器對應(yīng)的tabbar對應(yīng)的顏色
    // 注意:在ios7以前如果設(shè)置了tintColor只會改變字的顏色,圖片的顏色不會改變
    tabBar.tintColor = UIColor.orange
    
    addChileControllers()
    
    }
    
    // MARK: 添加子控制器
    private func addChileControllers(){
    
    addChildViewController(childControllerName: "HomeViewController", tittle: "首頁", imageName: "tabbar_home")
    addChildViewController(childControllerName: "MessageViewController", tittle: "消息", imageName: "tabbar_message_center")
    addChildViewController(childControllerName: "DiscoverViewController", tittle: "廣場", imageName: "tabbar_discover")
    addChildViewController(childControllerName: "ProfileViewController", tittle: "我", imageName: "tabbar_profile")
    
     }
    
    // MARK: 具體的每個控制器的操作
    private func addChildViewController(childControllerName: String,tittle:String ,imageName:String) {
    
    // 1.動態(tài)獲取命名空間
    let namespace = Bundle.main.infoDictionary!["CFBundleExecutable"] as! String
    
    // 2.將字符串轉(zhuǎn)換為類
    // 2.1.默認(rèn)情況下命名空間就是項目的名稱,但是命名空間的名稱是可以更改的
    let Clas: AnyClass? = NSClassFromString(namespace + "." + childControllerName)
    
    // 3.通過類創(chuàng)建對象
    // 3.1.將AnyClass 轉(zhuǎn)化為指定的類
    let vcClass = Clas as! UIViewController.Type
    
    // 4.通過class創(chuàng)建對象
    let vc = vcClass.init()
    
    // 1.設(shè)置首頁對應(yīng)的數(shù)據(jù)
    vc.tabBarItem.image = UIImage(named: imageName)
    vc.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted")
    vc.title = tittle
    
    // 2.給子控制器包裝一個導(dǎo)航控制器
    let nav = UINavigationController()
    nav.addChildViewController(vc)
    
    // 3.將導(dǎo)航控制器添加到當(dāng)前控制器上
    addChildViewController(nav)
    
      }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容