添加行时,swift3中的TableView崩溃问题

时间:2017-03-17 09:57:07

标签: swift uitableview

这里我试图添加一个新行,但它崩溃并给出错误“尝试将第3行插入第2部分,但更新后第2部分只有3行”。最初emerCount是2,我试图添加第3行。

 var index = NSIndexPath()
    if (emerCount<3){
        emerCount += 1

        index = NSIndexPath(row: emerCount, section: 2)
        self.profileTableView?.insertRows(at: [index as IndexPath], with: .automatic)
        self.profileTableView?.reloadData()
    }

3 个答案:

答案 0 :(得分:0)

需要更多背景信息。您的数据源(number​Of​Rows(in​Section:​))方法中写了什么?您number​Of​Rows(in​Section:​)似乎为该部分返回3,但您想再添加一行。

答案 1 :(得分:0)

删除此行:self.profileTableView?.reloadData()

答案 2 :(得分:0)

两个问题:

  • 在调用insertRows之前,您必须将数据源数组中的项插入到同一位置(第2节中的索引emerCount)。这是强制性的。
  • 基本上从不reloadData()之后立即致电insertRows。插入行会使用动画更新表格视图。删除reloadData()

进一步注意索引是从零开始的,第三行确实是在索引2处插入的。

PS:为什么表格视图是可选的?是以编程方式创建并暂时显示?并且不要在Swift 3中使用NSIndexPath