UITableView swipe to delete и другие возможности

Задача

Создать проект, в котором отображается таблица. По жесту swipe нужно открывать список кнопок с различными действиями. Например удалить строку в таблице.

Решение

Создайте проект в Xcode, используюя в качестве шаблона Single View Application. На имеющийся ViewController добавьте из библиотеки объектов TableView. Задайте констрейнты. Также из библиотеки объектов добавьте Table View Cell поверх Table View. Задайте Reuse Identifier для ячейки таблицы и высоту строки таблицы для удобства.

Создайте outlet для таблицы в классе контроллера.

Для начала нам нужны тестовые данные для вывода в таблицу. Давайте добавим массив строк в свойство контроллера ViewController

Теперь следует сделать класс  ViewController соответствующим двум протоколам UITableViewDataSource и UITableViewDelegate. Для этого следует изменить строку с объявлением класса и добавить нужные методы.

И методы:

Запустите проект… и вы ничего не увидите. Вернее увидите пустую таблицу. Это потому, что мы забыли указать конструктору интерфейсов, что наш контроллер будет делегатом таблицы. Для этого нужно сделать следующее:

 ctrl-перетягивание с таблицы на иконку контроллера и выбрать нужный пункт.

 

Запустите проект теперь и вы увидите нашу таблицу.




Теперь для реализации поведения swipe-to-delete или других методов работы со строками таблицы нужно добавить эти самые методы. По сути, мы будем создавать action для строк и просить таблицу вывести эти action в строке по жесту swipe.

Этот метод возвращает массив action, которые будут отображаться в строках. Нужно учесть, что порядок добавления action в массив обратный порядку их отображения в строке. То есть я добавил сначала метод удаления, а потом метод «Поделиться». Отображаться они будут так — «Поделиться», а затем «Удалить».

Также в методе удаления реализовано удаление двух типов — данных из массива и строки из таблицы. Не забывайте удаление строк делать именно так.

Метод «Поделиться» у нас пустой. Давайте по нажатию на эту кнопку выведем стандартное меню с заголовком как в строке таблицы. Измените код метода для shareAction:

Проект готов. Запустите и протестируйте методы, которые вызываются по кнопкам, скрытым в строках.

Полный код контролера:




Метки: ,

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*