无法从表格视图中删除行

时间:2018-09-24 06:38:28

标签: ios swift xcode

我有一个表视图,其中包含一定数量的行。使用同一ViewController上的按钮,我想弹出tableView行之一。但是,我无法这样做。请注意,我不是在使用表格视图的编辑样式,而是在同一ViewController上使用按钮从tableView中删除一行。

func postAction() {
        postTable.deleteRows(at: [IndexPath(row: 0, section: 0)] , with: .fade)
}

但是这会导致崩溃。我不确定为什么会这样,我应该如何纠正。我打算从tableView(postTable)的唯一部分中删除第一行

  

由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“无效的更新:第0节中的行数无效。
          更新(3)之后,现有节中包含的行数必须等于更新(3)之前该节中包含的行数,加上或减去从该节中插入或删除的行数(已插入0) ,删除1个),然后加上或减去移入或移出该部分的行数(移入0,移出0)。'

我的代码:

    postTable.delegate = self
    postTable.dataSource = self

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
      return 3
    }

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

            let cell = JobPostCellView(style: UITableViewCellStyle.default , reuseIdentifier: "PostCell")
            cell.delegate = self
            cell.name = arr[indexPath.row]
            return cell
    }

1 个答案:

答案 0 :(得分:2)

尝试

.htaccess.

这可能是因为您的tableview行与数据源的section方法中的行数不匹配而返回的行

例如

func postAction() {
    let indexPath = IndexPath(row: 0, section: 0)
    yourmodel.remove(at: indexPath.row)//update your model also here
    postTable.deleteRows(at: [indexPath] , with: .fade)
}

如果您在numberOfRowsInSection中返回10,则表中将有10行

现在您要从中删除1行,因此行将为9,但是您的numberOfRowsInSection方法仍然返回10,因此这将导致不一致,因此您必须更新numberOfRowsInSection部分中的计数以返回9

如果使用动态数组,则必须像在答案中一样将其从数组中删除