我在表格视图中创建了一个小的“通知中心”。但是图像以某种方式在重复自身,这不是应该的方式。
我无法真正弄清楚其原因,所以我要向你们寻求帮助。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let listPath = list[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "ListCell") as! HistoryCell
cell.setCell(list: listPath)
print(cell.note.text!)
//THIS ONE
if cell.note.text!.isEmpty == false
{
cell.noteImg.isHidden = false
}
return cell
}
这是我编写的代码的一部分。所以,让我解释一下这是如何工作的。
每次用户将数据添加到SPECIFIC文本字段时,都应将其添加到Firestore的“注释”中。
我从Firestore中选择所有内容,以将数据插入此UITableView
,并且如果“ notes”不为空。我的图像应该可见。
我现在得到的结果是: 即使值为nil,它也会重复添加。
因此,您可以在图片上看到。 第一个(1)是正确的。 (12:55的那个) 但是第二个应该不存在,它是随机添加的。
我真的希望你能理解,让它简短而有条理并不是一件容易的事。
编辑:
func setCell(list: listTxt){
DogName.text = list.dog
Person.text = list.person
Action.text = list.action
Date.text = list.date
Time.text = list.time
timer.text = list.timer
kilometer.text = list.kilometers
documentID.text = list.documentID
latitude = list.latitude
longitude = list.longitude
note.text = list.note
noteImg.image = list.noteImg
}
答案 0 :(得分:2)
我确定,但是根据我的知识和经验,以下代码会导致意外输出。
cell.note.text!.isEmpty == false
UITableView
用reusing
UITableViewCell
填充数据。这就是为什么您得到意外输出的原因。
只需用我的代码替换cellForRowAt
方法。我希望它能起作用。
代码:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let listPath = list[indexPath.row]
let cell = tableView.dequeueReusableCell(withIdentifier: "ListCell") as! HistoryCell
cell.setCell(list: listPath)
if listPath.note.isEmpty == false{
cell.noteImg.isHidden = false
}else{
cell.noteImg.isHidden = true
}
return cell
}
返回一个可重用的表视图单元对象以进行指定的重用 标识符并将其添加到表中。