Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式设置ios选项卡项_Ios_Swift_Uitabbaritem - Fatal编程技术网

以编程方式设置ios选项卡项

以编程方式设置ios选项卡项,ios,swift,uitabbaritem,Ios,Swift,Uitabbaritem,我有四个通过故事板设置的选项卡项,但我只有一个选项卡项,我希望以编程方式设置,因为我希望最后一个选项卡项成为我的配置文件图片。是否有一种方法可以在ProfileViewController中以编程方式仅设置一个选项卡栏项,而不必以编程方式设置其他三个选项卡栏项 我想将其设置为tabbar项,但结果为空: override func awakeFromNib() { super.awakeFromNib() self.tabBarItem.title = "MY

我有四个通过故事板设置的选项卡项,但我只有一个选项卡项,我希望以编程方式设置,因为我希望最后一个选项卡项成为我的配置文件图片。是否有一种方法可以在ProfileViewController中以编程方式仅设置一个选项卡栏项,而不必以编程方式设置其他三个选项卡栏项

我想将其设置为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()
}}

从情节提要加载后,视图控制器可以设置自己的选项卡图像。您可以在
awakeFromNib
中执行此操作:

class SecondViewController: UIViewController {

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

}
结果:


在调整图像大小方面,您可能希望比我做得更好。

视图控制器可以在从故事板加载后设置自己的选项卡图像。您可以在
awakeFromNib
中执行此操作:

class SecondViewController: UIViewController {

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

}
结果:


您可能希望在调整图像大小方面比我做得更好…

对不起,我已经更新了我的问题。即使我能够从我的资产文件夹中获取图像以显示,我也无法将从firebase检索到的图像作为我的tabbar图像。对UI的所有更新都需要在主线程(或主队列)上进行。您确定在主线程上调用了完成处理程序吗?是的,因为我使用相同的代码将相同的图片获取到图像视图,并且成功地证明它始终在主队列上运行,甚至不能证明它曾经在主队列上运行。从后台队列更新UI的效果是不可预测的。它可能在某些情况下有效,而在其他情况下无效。我如何确保图像出现?对不起,我已更新了我的问题。即使我能够从我的资产文件夹中获取图像以显示,我也无法将从firebase检索到的图像作为我的tabbar图像。对UI的所有更新都需要在主线程(或主队列)上进行。您确定在主线程上调用了完成处理程序吗?是的,因为我使用相同的代码将相同的图片获取到图像视图,并且成功地证明它始终在主队列上运行,甚至不能证明它曾经在主队列上运行。从后台队列更新UI的效果是不可预测的。它可能在某些情况下起作用,而在其他情况下不起作用。我如何确保图像出现?