我正在尝试使用此答案Cant insert rows into UITableView - Swift 3将行插入表格视图,但它工作正常,但显示的问题却跳过了一些数据。
基本上我的问题是我有2D数组var students : [[Student]]?
我想插入一个部分有4行的部分。
在表格视图中显示插入行的正确方法是什么。
到目前为止我在尝试什么
func numberOfSections(in tableView: UITableView) -> Int {
return students?.count ?? 0
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return students?[section].count ?? 0
}
并插入:
//scrolling down time calling this method
func oldestState(){
self.students?.append(getdata()) //Update students property
self.newsFeedTableView.beginUpdates()
let indexPaths = (0..<(getdata().count)).map { IndexPath(row: $0, section: (self.students?.count)! - 1) }
print(indexPaths)
self.newsFeedTableView.insertSections([(self.students?.count)! - 1], with: UITableViewRowAnimation.automatic)
self.newsFeedTableView.insertRows(at: indexPaths, with: UITableViewRowAnimation.automatic)
self.newsFeedTableView.endUpdates()
}
func getdata() -> [Student]{
var _students = [Student]()
for i in itemNumber..<(itemNumber + 4) {
let student = Student()
student.name = "\(i)"
print("adding student roll number : \(student.name)")
_students.append(student)
}
itemNumber += 4
return _students
}
这里是输出。如果您看到日志,您将看到跳过表格视图中的第8行 - 第11行
答案 0 :(得分:4)
我希望问题是因为getdata()
方法被调用两次,因此itemNumber
值增加4,两次
试试这个:
let data = getdata()
self.students?.append(data) //Update students property
self.newsFeedTableView.beginUpdates()
let indexPaths = (0..<(data.count)).map { IndexPath(row: $0, section: (self.students?.count)! - 1) }