Итак, моя цель - загрузить данные из базы данных и заполнить их в виде таблицы. Некоторые ячейки могут иметь или не иметь вид изображения в зависимости от загруженных данных из 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)
}
}