возможно, я мог бы сделать немного больше, чем простой комментарий, сделав пример реализации, заключающейся в том, чтобы сделать последнюю строку неподвижной в каждом разделе, который вы можете иметь:
func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
return self.tableView(tableView, numberOfRowsInSection: indexPath.section) - 1 != indexPath.row
}
ПРИМЕЧАНИЕ: если у вас есть источник данных и количество данных, доступных где-либо еще, было бы более желательно получить количество строк (в разделе) оттуда, не вызывая делегат метод (как я сделал здесь) - однако, логически нет ничего плохого ни с одной из концепций; кстати: вот документация по классу tableView(_:canMoveRowAt:)
, о которой вы хотите узнать больше.