2017-05-23 35 views
0

我有四个标签项目,我通过storyboard设置,但我只有一个标签栏,我想以编程方式设置,因为我希望最后一个标签栏项目是我的个人资料图片。有没有一种方法可以在ProfileViewController中以编程方式设置一个标签栏项目,而无需以编程方式设置其他三个标签栏项目。以编程方式设置ios的tabbar项目

我想这个设置的TabBar项目,但它是未来空白:

override func awakeFromNib() { 

     super.awakeFromNib() 
     self.tabBarItem.title = "MY ACCOUNT" 
     // self.tabBarItem.image = UIImage(named: "Speech Bubble Filled-50") 

     if let postProfile = self.loggedInUserUid { 

      let imageRef = FIRStorage.storage().reference().child((loggedInUserUid)!+"/profile_pic.jpg") 

      imageRef.data(withMaxSize: 1 * 1024 * 1024, completion: { (data, error) -> Void in 
       if error != nil { 
        print(error) 
        return 
       } 
       DispatchQueue.main.async(execute: {() -> Void in 
        let image = UIImage(data: data!) 
        self.tabBarItem.image = image 
       }) 

      }).resume() 
}} 

回答

4

视图控制器可以从故事板被加载后,树立了自己的标签图像。你可以做到这一点在awakeFromNib

class SecondViewController: UIViewController { 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     self.tabBarItem.image = UIImage(named: "star") 
    } 

} 

结果:

tab bar with star image

你可能想比我做的图像大小做一个更好的工作......

+0

是!有用!!非常感谢!! – juelizabeth

+0

对不起,我更新了我的问题。即使我能够从我的资产文件夹中获取图像以显示,但我无法从Firebase检索到的图像是我的tabbar图像。 – juelizabeth

+0

UI的所有更新都需要在主线程(或主队列)上进行。你确定在主线程上调用完成处理程序吗? –

相关问题