Отключить перемещение последней строки с помощью Swift и UITableview - PullRequest
0 голосов
/ 29 октября 2018

Я разработчик iOS и в настоящее время занимаюсь разработкой приложения с использованием UITableView. Последняя строка UITableView содержит кнопку.

Но здесь возникла проблема. Я поместил функцию move (moveRowAt) в строку, и я могу перейти к последнему ряду! Последний ряд не должен быть перемещен. Он всегда должен находиться в последнем ряду. В последней строке должен быть отключен «moveRowAt».

Я просмотрел много информации, включая Переполнение стека, но я не получил никаких подсказок.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

возможно, я мог бы сделать немного больше, чем простой комментарий, сделав пример реализации, заключающейся в том, чтобы сделать последнюю строку неподвижной в каждом разделе, который вы можете иметь:

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

ПРИМЕЧАНИЕ: если у вас есть источник данных и количество данных, доступных где-либо еще, было бы более желательно получить количество строк (в разделе) оттуда, не вызывая делегат метод (как я сделал здесь) - однако, логически нет ничего плохого ни с одной из концепций; кстати: вот документация по классу tableView(_:canMoveRowAt:), о которой вы хотите узнать больше.

0 голосов
/ 29 октября 2018

На этом этапе вам необходимо указать табличному представлению, что последняя строка не должна перемещаться. Этого можно добиться, применив метод источника данных tableView(_:canMoveRowAt:):

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

при условии, что вы уже знаете количество строк, вам следует проверить последнюю.


Более того : для вашего случая было бы неплохо использовать кнопку как tableFooterView вместо строки, поэтому нет необходимости реализовывать описанный выше метод.

...