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

Disable move last row using Swift and UITableview

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

但是这里出现了问题。我把移动(moveRowAt)函数放在行里,我可以移动到最后一行!最后一行不应移动。它应始终位于最后一行。最后一行必须禁用 'moveRowAt'。

我查了很多资料,包括Stack Overflow,但没有得到任何线索。

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

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

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


此外:对于您的情况,将按钮作为 tableFooterView 而不是行可能是个好主意,因此无需实施上述方法。

也许我可以通过在 每个 部分中使最后一行不可移动来做一个简单的评论:

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

注意: 如果您有自己的数据源和可在其他任何地方访问的数据数量,则更希望获得行数(在部分) 从那里而不是通过调用委托方法(就像我在这里所做的那样)——但是,从逻辑上讲,任何概念都没有错;顺便说一句:这里是 tableView(_:canMoveRowAt:) 的 class-ref 文档,如果您想了解更多信息。