簡體   English   中英

從Firebase存儲中檢索圖像以顯示在tableView單元上

[英]Retrieve image from firebase storage to show on tableView cell

我只需要我用firebase構建Instagram克隆的幫助,而我在發布feed時遇到問題,我無法從firebase存儲中檢索圖像以顯示在tableView單元上,請您幫幫我,

導入UIKit

導入FirebaseAuth

導入FirebaseDatabase

類HomeViewController:UIViewController,UITableViewDelegate {

@IBOutlet weak var tableview: UITableView!
var posts = [Post]()
override func viewDidLoad() {
    super.viewDidLoad()

    tableview.dataSource = self
    loadposts()

 //   var post = Post(captiontxt: "test", photoUrlString: "urll")
 //   print(post.caption)
 //   print(post.photoUrl)

}

func loadposts() {
    Database.database().reference().child("posts").observe(.childAdded){ (snapshot: DataSnapshot)in
        print(Thread.isMainThread)
          if let dict = snapshot.value  as? [String: Any]{
            let captiontxt = dict["caption"] as! String
            let photoUrlString = dict["photoUrl"] as! String
           let post = Post(captiontxt: captiontxt, photoUrlString: photoUrlString )
            self.posts.append(post)
            print(self.posts)
            self.tableview.reloadData()
        }
    }
}

@IBAction func logout(_ sender: Any) {
    do {
        try Auth.auth().signOut()
    }catch let logoutErrorr{
        print(logoutErrorr)
    }
    let storyboard = UIStoryboard(name: "Start", bundle: nil)
    let signinVC = storyboard.instantiateViewController(withIdentifier: "SigninViewController")
    self.present(signinVC, animated: true, completion: nil)


}

}擴展HomeViewController:UITableViewDataSource {func tableView(_ tableView:UITableView,numberOfRowsInSection部分:Int)-> Int {返回posts.count

}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableview.dequeueReusableCell(withIdentifier: "imagecell", for: indexPath) as! PostCellTableViewCell
   cell.captionLabel.text = posts[indexPath.row].caption
    cell.postimage.image =  posts[indexPath.row].photoUrl
   // print(cell.captionLabel.text)
   // print(cell.daysLabel.text)


    return cell
}

}

enter code here

導入基礎類Post {var caption:String var photoUrl:String

init(captiontxt: String, photoUrlString: String) {
    caption = captiontxt
    photoUrl = photoUrlString

}

}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableview.dequeueReusableCell(withIdentifier: "imagecell", for: indexPath) as! PostCellTableViewCell

    cell.postimage.image = nil

    cell.tag += 1
    let tag = cell.tag

    cell.captionLabel.text = posts[indexPath.row].caption

    let photoUrl = posts[indexPath.row].photoUrl

    getImage(url: photoUrl) { photo in
        if photo != nil {
            if cell.tag == tag {
                DispatchQueue.main.async {
                    cell.postimage.image = photo
                }
            }
        }
    }

    return cell
}

func getImage(url: String, completion: @escaping (UIImage?) -> ()) {
    URLSession.shared.dataTask(with: URL(string: url)!) { data, response, error in
        if error == nil {
            completion(UIImage(data: data!))
        } else {
            completion(nil)
        }
    }.resume()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM