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



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

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

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

也许我可以做一个简单的评论,通过在的每个部分中制作一个使最后一行不可移动的示例实现:

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

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

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

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

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


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

最新更新