如何在UITableView中插入多行

时间:2017-08-03 09:32:16

标签: ios swift uitableview

我正在尝试使用此答案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
    }

check full code

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

enter image description here

1 个答案:

答案 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) }