асинхронная загрузка изображений в UITableView только для определенных ячеек - PullRequest
0 голосов
/ 29 июня 2019

Итак, моя цель - загрузить данные из базы данных и заполнить их в виде таблицы. Некоторые ячейки могут иметь или не иметь вид изображения в зависимости от загруженных данных из Firebase. Что я сделал, так это добавил представление изображения в свою ячейку табличного представления и присвоил ему высоту 0. Когда я вызываю функцию init моего класса ячеек табличного представления, я передаю все параметры. Если параметр URL загрузки равен nil, представление изображения сохранит свое свойство. Но если URL-адрес загрузки имеет URL-адрес, то будет показано представление изображения и будет указана высота, после чего будет вызвана функция (в классе ячеек табличного представления) для загрузки и установки изображения для UIImageView. Я не думаю, что это правильный метод, потому что каждый раз, когда я прокручиваю (ячейка перезагружается), в ячейке появляются изображения, на которых не должно быть никаких изображений. Пожалуйста, помогите мне с этим. Я очень новичок в разработке приложений для iOS, поэтому, пожалуйста, будьте добры. Вот функция CellForRow. Я перезагружаю таблицу после завершения загрузки данных.

func tableView(_ tableView: UITableView, cellForRowAt indexPath:     IndexPath) -> UITableViewCell {
    if(indexPath.row == 0){

    }
    guard let cell = broadcastTable.dequeueReusableCell(withIdentifier: "BC") as? BroadCastCell else {
        return UITableViewCell()
    }
    let cast: Broadcasts!
    cast = BroadCasts[indexPath.row]
    cell.databaseinit(username: cast.username, college: cast.collegename, message: cast.message, downloadURL: cast.downloadURL, date: cast.date)

    broadcastTable.rowHeight = UITableView.automaticDimension
    broadcastTable.separatorStyle = .none
    return cell
}

А вот класс TableCell

класс BroadCastCell: UITableViewCell {

@IBOutlet weak var DateAndTimeLbl: UILabel!
@IBOutlet weak var BackGroundView: UIView!
@IBOutlet weak var messageLbl: UILabel!
@IBOutlet weak var UsernameLbl: UILabel!
@IBOutlet weak var collegeLbl: UILabel!
@IBOutlet weak var MessageImg: UIImageView!
@IBOutlet weak var MessageImgHeight: NSLayoutConstraint!

override func awakeFromNib() {
    super.awakeFromNib()
    BackGroundView.backgroundColor = UIColor(gradientStyle: .topToBottom, withFrame: BackGroundView.frame, andColors: [#colorLiteral(red: 1, green: 0.4274509804, blue: 0.03137254902, alpha: 1),#colorLiteral(red: 1, green: 0.5960784314, blue: 0.04705882353, alpha: 1)])
}

func databaseinit(username: String, college: String, message: String, downloadURL: String, date: String){
    self.UsernameLbl.text = username
    self.collegeLbl.text = college
    self.messageLbl.text = message
    if(downloadURL != "nil"){
        downloadImages(imageurl: downloadURL)
    }
    self.DateAndTimeLbl.text = date

}

func downloadImages(imageurl: String){
    MessageImgHeight.constant = 150
    self.MessageImg.sd_setImage(with: URL(string: imageurl))
    MessageImg.isHidden = false
    MessageImg.layer.masksToBounds = true
    MessageImg.layer.cornerRadius = 8
    MessageImg.layer.borderWidth = 1.5
    MessageImg.layer.borderColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...