设为首页 加入收藏

TOP

Swift学习--微博的基础框架搭建(二)
2017-10-10 12:16:06 】 浏览:1019
Tags:Swift 学习 基础 框架 搭建
ch中继续执行
//Try! :发生一次程序直接崩溃 let dictArr = try NSJSONSerialization.JSONObjectWithData(jsonData!, options: NSJSONReadingOptions.MutableContainers) //遍历数组,动态创建控制器和设置数据 //在Swift中,如果需要遍历一个数组,必须明确数据的类型 for dict in dictArr as! [[String: String]] { //报错的原因是因为addChildViewController参数必须有值,但是字典的返回值是可选类型 addChildViewController(dict["vcName"]!, title: dict["title"]!, imageName: dict["imageName"]!) } } catch { //发生异常之后会执行的代码 print(error) //从本地创建控制器 addChildViewController("HomeTableViewController", title: "首页", imageName: "tabbar_home") addChildViewController("MessageTableViewController", title: "消息", imageName: "tabbar_message_center") addChildViewController("DiscoverTableViewController", title: "广场", imageName: "tabbar_discover") addChildViewController("ProfileTableViewController", title: "", imageName: "tabbar_profile") } } } /** 初始化子控制器 - parameter childController: 需要初始化的子控制器 - parameter title: 子控制器的标题 - parameter imageName: 子控制器的图片名字 */ private func addChildViewController(childControllerName: String, title:String, imageName:String) { //动态获取命名空间 let ns = NSBundle.mainBundle().infoDictionary!["CFBundleExecutable"] as! String //1.将字符串转换为类 //默认情况下命名空间就是项目的名称,但是命名空间名称是可以修改的 let cls:AnyClass? = NSClassFromString(ns + "." + childControllerName) //2通过类创建对象 //将AnyClass转换为指定的类型 let vcCls = cls as! UIViewController.Type //通过class创建对象 let vc = vcCls.init() //设置控制器tabar对应的数据 vc.tabBarItem.image = UIImage(named: imageName) vc.tabBarItem.selectedImage = UIImage(named: imageName + "_highlighted") vc.title = title //2.给控制器包装一个导航栏控制器 let nav = UINavigationController() nav.addChildViewController(vc) //3.将导航栏控制器添加到当前控制器上 addChildViewController(nav) }

 

三.创建微博中间加号按钮

 override func viewDidLoad() {
        super.viewDidLoad()
        //设置当前控制器对应的tabbar的颜色
        //注意:在ios7以前如果设置了tintColor志勇文字会变,但图片不会变
        tabBar.tintColor = UIColor.orangeColor()
        //添加子控制器
       addChildViewControllers()
    
    }
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
      
        // 此时 tabBarButton 都已经创建
        print(tabBar.subviews)
        // 初始化加号按钮
        setupComposeBtn()
    }
   //添加子控制器
    func addChildViewControllers(){
        //1.获取json文件的路径
        let path = NSBundle.mainBundle().pathForResource("MainVCSettings.json", ofType: nil)
        //2.通过文件路径创建NSData
        if let jsonPath = path{
            let jsonData = NSData(contentsOfFile: jsonPath)
            do{
                //可能发生的异常代码放到这里
                //序列话json数据->Array
                //Try:发生异常会跳到catch中继续执行
                //Try! :发生一次程序直接崩溃
                let dictArr = try NSJSONSerialization.JSONObjectWithData(jsonData!, options: NSJSONReadingOptions.MutableContainers)
                //遍历数组,动态创建控制器和设置数据
                //在Swift中,如果需要遍历一个数组,必须明确数据的类型
                for dict in dictArr as! [[String: String]]
                {
                    //报错的原因是因为addChildViewController参数必须有值,但是字典的返回值是可选类型
                    addChildViewController(dict["vcName"]!, title: dict["title"]!, imageName: dict["imageName"]!)
                }
            }
            catch
            {
                //发生异常之后会执行的代码
                print(error)
                //从本地创建控制器
                addChildViewController("HomeTableViewCont
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇ios Swift 中文学习手册 下一篇iOS开发--Swift RAC响应式编程初探

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目