以编程方式设置ios选项卡项
我有四个通过故事板设置的选项卡项,但我只有一个选项卡项,我希望以编程方式设置,因为我希望最后一个选项卡项成为我的配置文件图片。是否有一种方法可以在ProfileViewController中以编程方式仅设置一个选项卡栏项,而不必以编程方式设置其他三个选项卡栏项 我想将其设置为tabbar项,但结果为空:以编程方式设置ios选项卡项,ios,swift,uitabbaritem,Ios,Swift,Uitabbaritem,我有四个通过故事板设置的选项卡项,但我只有一个选项卡项,我希望以编程方式设置,因为我希望最后一个选项卡项成为我的配置文件图片。是否有一种方法可以在ProfileViewController中以编程方式仅设置一个选项卡栏项,而不必以编程方式设置其他三个选项卡栏项 我想将其设置为tabbar项,但结果为空: override func awakeFromNib() { super.awakeFromNib() self.tabBarItem.title = "MY
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的效果是不可预测的。它可能在某些情况下起作用,而在其他情况下不起作用。我如何确保图像出现?