如何在 UITableView 中插入多行

Naz*_*san 0 uitableview ios swift

我正在尝试这个答案Cant insert rows into UITableView - Swift 3 for inserting row to the table view 它工作正常,但它们显示问题但跳过一些数据。

基本上我的问题是我有 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
    }
Run Code Online (Sandbox Code Playgroud)

并插入:

 //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
    }
Run Code Online (Sandbox Code Playgroud)

检查完整代码

这是输出。如果您看到日志,您将看到跳过表视图中的第 8 - 11 行

在此输入图像描述

Shy*_*yam 5

我希望问题是因为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) }
Run Code Online (Sandbox Code Playgroud)