使用Swift和UITableview禁用移动最后一行

时间:2018-10-29 10:11:18

标签: ios swift uitableview move

我是iOS开发人员,目前正在使用UITableView开发应用程序。 UITableView的最后一行包含一个按钮。

但是这里有一个问题。我将move(moveRowAt)函数放在行中,然后可以移到最后一行!最后一行不应移动。它应始终位于最后一行。最后一行必须禁用“ moveRowAt”。

我查看了很多信息,包括Stack Overflow,但是我没有任何线索。

2 个答案:

答案 0 :(得分:1)

也许我可以做一个简单的注释,使示例行实现使 every 部分中的最后一行不动:

func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
    return self.tableView(tableView, numberOfRowsInSection: indexPath.section) - 1 != indexPath.row
}

注意: 如果您有数据源和可从其他地方访问的数据数,则更希望获得行数(在本节中) ),而不是通过调用委托方法(就像我在这里所做的那样)–但是,从逻辑上讲,任何概念都没有错;顺便说一句:tableView(_:canMoveRowAt:)的类引用文档,您想进一步了解它。

答案 1 :(得分:0)

这时,您需要告诉表视图不应移动最后一行。您可以通过实现tableView(_:canMoveRowAt:)数据源方法来实现此目的:

func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
    // '??' means the last row...
    return indexPath.row == ?? ? false : true
}

假设您已经知道行数,则应检查最后一行。


此外:对于您而言,将按钮设为tableFooterView而不是行可能是个好主意,因此无需实现上述方法。