【问题标题】:UIBarButton Item Won't Appear in Navigation BarUIBarButton 项目不会出现在导航栏中
【发布时间】:2017-07-29 08:09:32
【问题描述】:

我知道还有其他类似的问题,但到目前为止我还没有得到一个有效的答案,所以这就是我写这篇文章的原因。

我现在有以下代码来放置 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,因为我在打印输出中对其进行了测试。任何帮助,将不胜感激。谢谢!

【问题讨论】:

  • UIImage(named: (self.user?.photoURL?.absoluteString)!) 是否返回图像并且self.navigationController? 为零? self.user 是零吗?
  • 你在分配imageview的frame吗
  • 这个视图控制器是否真的嵌入在导航控制器中?还有你为什么用self.navigationController?.navigationItem.leftBarButtonItem = ...而不是self.navigationItem.leftBarButtonItem = ...
  • 您的代码中充满了炸弹 (!) 等着引爆。请了解如何安全地解开可选项。
  • self.user?.photoURL?.absoluteStringUIImage(named:) 一起使用是完全错误的,原因有很多。

标签: ios swift uinavigationcontroller uiimageview uibarbuttonitem


【解决方案1】:

只使用navigationItem 而不是navigationController.navigationItem

好的,我刚刚看到你的问题。

您正在使用 URL 作为图像的“名称”。那样不行。

函数UIImage(named: "blah") 将从应用程序包中加载一个图像,该应用程序包以给定的名称存储。

如果您想从 URL 下载图像,则需要在后台运行下载任务,然后在完成后加载图像。

也尝试使用 AlamofireImage 框架。

【讨论】:

  • @RohanVasishth 哦等等...您希望图像会发生什么?是您要下载的吗?
  • 是的,我正在尝试从 URL 下载图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
相关资源
最近更新 更多