如何从URL中添加TableView中的am image

时间:2017-06-08 02:08:55

标签: ios swift uitableview url uiimageview

我很困惑如何将DownloadURL作为链接并将其转换为图像并将其添加到我的tableview单元格中?我的故事板中有一个imageview,不知道如何将它连接到tableview单元格。谢谢!

override func viewDidLoad() { super.viewDidLoad()

    let ref = FIRDatabase.database().reference().child("Posts")

    ref.observeSingleEvent(of: .value, with: { snapshot in

        print(snapshot.childrenCount)

        for rest in snapshot.children.allObjects as! [FIRDataSnapshot] {

            guard let value = rest.value as? Dictionary<String,Any> else { continue }

            guard let  downloadURL = value["DownloadURL"] as? String else { continue }

            let post = postStruct(title: title, date: date, author: author, article: article, downloadURL: downloadURL)

            self.posts.append(post)

        }

        self.posts = self.posts.reversed(); self.tableView.reloadData()

    })

}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return posts.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell")

    let label1 = cell?.viewWithTag(1) as! UILabel
    label1.text = posts[indexPath.row].title
    return cell!
}

3 个答案:

答案 0 :(得分:2)

谷歌这个cocoapod:SDWebImage

使用它,这是不可思议的

夫特:

import SDWebImage

imageView.sd_setImage(with: URL(string: "url"), placeholderImage: UIImage(named: "placeholder.png"))

关于连接图像视图的第二个问题,您需要创建自定义单元格

答案 1 :(得分:1)

1)您需要使用image创建自定义单元格类,如下所示:

class MyCustomCell: UITableViewCell {
    //...some vars?
    @IBOutlet myImageView: UIImageView!
    //...some vars?
}

2)为你table view设置它。你可以在google,SO等中找到很多关于 1 2 的教程。示例:Add custom cells for tableView

3)安装KingFisher以缓存图像。 Kingfisher。它会让你的tableview有平滑的滚动。 (注意:您可以使用任何模拟,如SDWebImage

安装:

  您的pod文件中的

1)pod 'Kingfisher', '~> 3.0'

     

2)终端

中的pod install      

3)你的swift-code文件中的import Kingfisher

4)在table view

中使用它
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "myCustomCell", for: indexPath) as! MyCustomCell
    let row = indexPath.row

    // ...other vars?

    let imageURL = URL(string: self.posts[row].downloadURL)
    cell.myImageView.kf.setImage(with: imageURL) // Using kingfisher for caching and viewing. 
     // next time, when you will use image with this URL, it will be taken from cache.

    // ...other vars?

    return cell
}

希望有所帮助

答案 2 :(得分:0)

我认为您从firebase

下载图片的方式错误
  1. firebase storage下载图片网址。您需要在tableCell
  2. 中定义imageView

    `

    let imagesRef = FIRStorage.storage().reference()
    let imageRef = self.imagesRef.child("imageName.jpg")
    imageRef.downloadURL { url, error in
        if let error = error {
        } else {
            DispatchQueue.main.async {
                cell.imageView.kf.setImage(with: url)
            }
        }
    }
    

    `

    1. 您的代码有问题,为什么您尝试使用firebase database下载图片,这是因为您无法解决问题。