图像未显示在 firebase 的表格单元格中

Posted

技术标签:

【中文标题】图像未显示在 firebase 的表格单元格中【英文标题】:Image not display in table cells from firebase 【发布时间】:2017-02-08 12:02:34 【问题描述】:

我有一个表格视图,

我有一个使用 Firebase 获取一些数据的数据库:标题、标题、图片。

标题和说明显示完美,并且是从 Firebase 获取的。但是,没有图像出现。 ..

任何帮助都会令人惊叹:) :)

我的视图控制器的代码如下:

//
//  Feed.swift
//  MobileAppDemo
//
//  Created by Mikko Hilpinen on 31.10.2016.
//  Copyright © 2016 Mikkomario. All rights reserved.
//

import UIKit
import FirebaseAuth
import FirebaseDatabase
import FirebaseStorage
import SwiftKeychainWrapper
import SwiftyJSON

var posts = [Post]()
var selectedIndexPath: Int = 0

class FeedVC: UIViewController, UITableViewDataSource, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UITableViewDelegate 

@IBOutlet weak var feedTableView: UITableView!

private var readPosts: ObserveTask?

@IBOutlet weak var imageView: UIImageView!

override func viewDidLoad() 
    super.viewDidLoad()

    feedTableView.dataSource = self
    feedTableView.delegate = self

    readPosts = Post.observeList(from: Post.parentReference.queryOrdered(byChild: Post.PROPERTY_CREATED)) 
        observedPosts in

        posts = observedPosts.reversed()
        self.feedTableView.reloadData()
    


func numberOfSections(in tableView: UITableView) -> Int 
    return 1


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return posts.count


func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
    return UITableViewAutomaticDimension


func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat 
    return UITableViewAutomaticDimension


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell  
    let cell = self.feedTableView.dequeueReusableCell(withIdentifier: "MessageCell")! as UITableViewCell

    let messageImageView = cell.viewWithTag(1) as! UIImageView
    let titleLabel = cell.viewWithTag(2) as! UILabel
    let captionText = cell.viewWithTag(3) as! UILabel


    titleLabel.text = posts[indexPath.row].title
    titleLabel.numberOfLines = 0

    captionText.text = posts[indexPath.row].caption
    captionText.numberOfLines = 0


    return cell



func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    selectedIndexPath = indexPath.row
    self.performSegue(withIdentifier: "push", sender: self)
    self.feedTableView.reloadData()


要调用图像,我在 cell.swift 中有以下内容

  //
 //  MessageCell.swift
 //  MobileAppDemo
 //
 //  Created by Mikko Hilpinen on 31.10.2016.
 //  Copyright © 2016 Mikkomario. All rights reserved.
 //

 import UIKit
 import FirebaseStorage


 class MessageCell: UITableViewCell
 
 // @IBOutlet weak var profileImageView: UIImageView!
 // @IBOutlet weak var likeButton: UIButton!

 @IBOutlet weak var messageImageView: UIImageView!
 @IBOutlet weak var messageTextView: UITextView!
 @IBOutlet weak var titleTextView: UITextView!
 @IBOutlet weak var linkbutton: UIButton!

 // @IBOutlet weak var likeLabel: UILabel!

private var post: Post!

func configureCell(tableView: UITableView, post: Post)

    self.post = post

    // Basic info
  //        self.messageImageView.image = postPic

   messageImageView.image = post.postPic
   titleTextView.text = post.title
    messageTextView.text = post.caption


    // Post user
    User.get(id: post.creatorId)
    
        postCreator in 




    // Image
    Storage.getImage(with: post.imageUrl)
    
        postPic in

        self.messageImageView.image = postPic
        // Row height changes so table needs to be reset
        tableView.beginUpdates()
        tableView.endUpdates()
    

--

我已使用以下内容更新了我的 feed.swift:

    messageImageView.sd_setImage(with: URL(string:"\(posts[indexPath.row].imageUrl)"))

使用 SDWebImage - 但我仍然没有显示任何图像:(

【问题讨论】:

【参考方案1】:

您没有看到任何图像,因为您从未设置它们。您需要在cellForRowAt内拨打configureCell

【讨论】:

嗯,谢谢 Russel,你知道如何实现吗?谢谢:) 只需在cellForRowAt 内拨打电话 - 但您的 Cell 课程有点奇怪。您不应该从单元格内重新加载tableView,并且您根本不需要对tableView 的引用。此外,您已经为正在使用的某些控件创建了插座,但随后您忽略了插座并使用标记值访问控件。 好的,我会尽力的,我从ios dev开始,所以我不能够做到这一点ehhehe

以上是关于图像未显示在 firebase 的表格单元格中的主要内容,如果未能解决你的问题,请参考以下文章

在表格单元格中上传 Firebase 数据

将数据从两个单独的 Firebase 节点加载到一个表格视图单元格中

在 ios 的表格视图单元格中显示图像

在表格视图单元格中以编程方式显示图像

图像未显示在集合视图单元格中

将两个单独的Firebase节点中的数据加载到一个表格视图单元格中