使用 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 文档,如果您想了解更多信息。
我是一名 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 文档,如果您想了解更多信息。