У меня есть представление коллекции, где вы прокручиваете вертикально. Внутри каждой ячейки представления коллекции у меня есть табличное представление, которое состоит из комментариев. Я загружаю данные из Firebase и в представление коллекции, и в представление таблицы.
То, что я пытаюсь сделать, это загрузить конкретные данные и правильное количество строк в табличном представлении внутри ячейки коллекции на основе photoID из фотографии в ячейке моей коллекции. По сути, я хочу, чтобы правильные комментарии и правильные числа были в каждой табличной ячейке внутри каждой ячейки.
Проблема заключается в том, что комментарии не отображаются в нужных ячейках, а также количество разрядов в табличных представлениях. В разных ячейках представления коллекции неправильные значения.
в моем контроллере collectionview я использую этот Func для получения моих данных.
func fetchData(){
let ref = Database.database().reference()
ref.child("photos").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject]{
let photo = Photo(dictionary: dictionary)
photo.videoId = snapshot.key
self.photos.append(photo)
if let photoId = photo.videoId{
self.photoTimeStampDictionary[photoId] = photo
}
DispatchQueue.main.async {
self.cView.reloadData()
}
self.attemptReloadCollectionView()
}
}, withCancel: nil)
}
тогда в ячейке.
let photo = photos[indexPath.row]
cell.photo = photo
return cell
// I then use the photo variable inside my collectionviewcell.
Это моя структура базы данных:
**Comments**
**randomID**
[commenttext: "blabla"]
[uid: the senders UID]
[photo ID: the photoID]
**Photos**
**photo ID**
[and some more info here ofc]
Моя модель класса.
class Comment: NSObject {
var commentId: String?
var commentText: String?
var photoId: String?
var timeStamp: NSNumber?
var uid: String?
init(dictionary: [String: AnyObject]) {
self.commentId = dictionary["commentid"] as? String
self.commentText = dictionary["commenttext"] as? String
self.photoId = dictionary["photoid"] as? String
self.timeStamp = dictionary["timestamp"] as? NSNumber
self.uid = dictionary["uid"] as? String
}
}
Представление коллекции работает нормально и так же, как и должно.
Это то, что я пробовал. (Это внутри коллекции viewcell)
var comments = [Comment]()
func fetchData(){
let ref = Database.database().reference()
ref.child("comments").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject]{
let comment = Comment(dictionary: dictionary)
// comment.commentId = snapshot.key
self.comments.append(comment)
DispatchQueue.main.async {
self.commentsTableView.reloadData()
}
}
}, withCancel: nil)
}
и затем в cellforrow:
let comment = comments[indexPath.row]
if comment.photoId == self.photo?.videoId{
cell.commentText.text = comment.commentText
}
фотография - это мой класс модели для всей информации, связанной с настройкой ячейки представления коллекции, за исключением представления таблицы. С помощью приведенного выше кода один конкретный комментарий, относящийся к одной конкретной картинке, иногда отображается на нескольких фотографиях.
Буду признателен за помощь в решении этой проблемы. Я могу себе представить, что это как-то связано с перезагрузкой табличного представления, а также с определением пути индекса в представлении коллекции.
Заранее спасибо.
С уважением,
Wurzel