我知道还有其他这样的问题,但到目前为止我还没有得到一个有效的答案,所以这就是我写这个的原因。
我现在有以下代码来放置一个leftBarButtonItem:
let user = FIRAuth.auth()?.currentUser
var imageView: UIImageView?
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
setupNavBar()
}
func setupNavBar() {
//left bar button item setup
let url = URL(string: (self.user?.photoURL?.absoluteString)!)
let data = try? Data(contentsOf: url!)
imageView?.image = UIImage(data: data!)
imageView?.layer.masksToBounds = true
imageView?.layer.borderWidth = 1.5
imageView?.layer.borderColor = UIColor.white.cgColor
imageView?.layer.cornerRadius=(imageView?.bounds.width)! / 2
let profileImageButton = UIBarButtonItem(image: UIImage(named: (self.user?.photoURL?.absoluteString)!), style: .plain, target: self, action:#selector(UserGroupsMainViewController.navLeftBarButtonTapped))
self.navigationController?.navigationItem.leftBarButtonItem = profileImageButton
}
func navLeftBarButtonTapped() {
}
由于某种原因,该按钮不会出现在导航控制器上。我确实知道我有一个非零的URL,因为我在打印输出中测试了它。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
只需使用navigationItem
而不是navigationController.navigationItem
好的,我刚看到你的问题。
您正在使用网址作为"名称"一个图像。它不会那样工作。
函数UIImage(named: "blah")
将从以给定名称存储的应用包中加载图像。
如果您要从网址下载图片,则需要在后台运行下载任务,然后在完成后加载图片。
也尝试使用AlamofireImage框架。