gpt4 book ai didi

ios - uitableview 数据在快速滚动时重复

转载 作者:行者123 更新时间:2023-11-30 12:18:57 24 4
gpt4 key购买 nike

解析JSON数据后,在表格 View 中显示。第一次运行良好。 TableView 单元格具有三个按钮(输入、输出、缺席)。当我单击任何按钮时,我可以调用其他 JSON API。从 JSON 获取数据后,我必须更新 TableView 并重新加载新数据,但是当单击任何按钮时 TableView 数据会重复。

enter image description here

如何解决这个问题?这是代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell =
tableView.dequeueReusableCell(
withIdentifier: "DetailsCell", for: indexPath) as! AttendanceDetailsTableViewCell

let row = (indexPath as NSIndexPath).row

if(attendanceInfo.count>0){
cell.Class.text = attendance.standard
cell.NameLabel.text = attendance.name
cell.InLabel.text = attendance.inTime
cell.OutLable.text = attendance.outTime
return cell
}

成功时的第二个数据功能:

if(errorCode == "0")
{
self.getAttendances()
}

这是 getAttendances() 函数:

let task = session.dataTask(with:request,completionHandler:{(d,response,error)in
do{
if let data = d {
if let jsonData = try JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary {
// print("json data ",jsonData)

errorCode = String(describing: jsonData["errorCode"]!)

msg = jsonData["msg"] as! String

if errorCode == "0" {
if let kid_list = jsonData["students"] as? NSArray {
for i in 0 ..< kid_list.count {
if let kid = kid_list[i] as? NSDictionary {
if let store = kid["attendance"] as? NSDictionary
{
self.attendanceInfo.append(AttendanceInfo(
studentId: kid["studentId"] as? String,
name:kid["studentName"] as? String,
classId : kid["classId"] as? String,
standard: ((kid["standard"] as? String)! + " " + (kid["section"] as? String)!),
photo : (imageURL),
school: kid["schoolName"] as? String,
schoolId : "1",
url : self.serverURL,

attendanceDate: AttendanceDate,
inTime : InTime,
outTime: Outtime,
attendance:Attendance,
updatedTime:updateTime,
attendanceId: AttendaceID

)
)
}
}
}
self.do_table_refresh()
}
} else {
self.displayAlert("", message: msg)
}
} else {
self.displayAlert("error")
}
}else {
self.displayAlert("error")
}
} catch let err as NSError {
print("JSON Error \(err)")
}
})

task.resume()
}

func do_table_refresh(){
DispatchQueue.main.async(execute: {
self.activityIndicatorView.stopAnimating()

self.TableView.reloadData()
return
})
}

数据更新和表重新加载后, TableView 数据会重复。

最佳答案

在添加新数据之前必须清除数组,否则您将始终将项目附加到末尾。

添加self.attendanceInfo.removeAll()就在它进入循环之前

for i in 0 ..< kid_list.count {
...

关于ios - uitableview 数据在快速滚动时重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45042176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com