我有一个集合视图,您可以在其中垂直滚动。在每个集合视图单元中,我都有一个由评论组成的表格视图。我将数据从Firebase加载到集合视图和表视图。
我要执行的操作是基于收集单元格中照片的photoID,在收集单元格内的表格视图中加载特定数据和正确的行数。基本上,我希望每个collectionviewcell内的每个tableview都具有正确的注释和正确的行数
问题在于注释没有出现在正确的单元格中,并且表视图中的行数在不同的集合视图中也不正确。
在我的collectionviewcontroller中,我使用此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)
}
然后在cellforitem中
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
}
}
收藏夹视图可以正常工作,并且应该正常工作。
这是我尝试过的。 (这是在collectionviewcell内部)
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
}
照片是我的模型类,其中包括除tableview外的所有与设置collection view单元有关的信息。使用上面的代码,属于一张特定图片的一个特定注释有时会在几张照片上显示。
对于这个问题的帮助,我将不胜感激。我可以想象它必须与重新加载tableview并在集合视图中检测索引路径有关。
谢谢。
最好的问候, 毛泽尔
答案 0 :(得分:0)
尝试删除异步函数:
var评论=评论
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)
self.commentsTableView.reloadData()
}
}, withCancel: nil)
}
如果这确实是问题,我将进一步阐述。