Скрыть некоторые UITableViewCells при редактировании? - PullRequest
2 голосов
/ 01 декабря 2011

Фон

Я действительно изо всех сил пытаюсь понять, как обрабатывать режим редактирования UITableView и скрывать некоторые строки в начале редактирования.

Я использую стиль сгруппированного табличного представления с несколькими разделами и несколькими строками на раздел. Последняя строка каждого раздела называется «Добавить новый ...».

Идея состоит в том, чтобы позволить конечному пользователю щелкнуть строку «Добавить новый ...» в каждом разделе, а затем перейти на новый экран, где они заполняют некоторые поля и затем возвращаются в это представление таблицы со своей новой строкой. добавлено в соответствующий раздел. Так что последняя строка на самом деле не относится к источнику данных и больше относится к UX.

Мне удалось добавить строку Add в конец каждого раздела.

Проблема

У меня есть кнопка, которая вызывает: tableView setEditing:animated:, которая вставляет все строки и добавляет значок удаления слева от каждой строки.

Чего я не хочу, так это разрешить пользователю удалять строку «Добавить новый ...». Таким образом, моя оригинальная мысль заключалась в том, чтобы просто удалить возможность удаления этих строк «Добавить новые ...», используя tableView:canEditRowAtIndexPath:.

Это сработало, но выглядит очень дерьмово, поскольку все строки вставлены, кроме строк "Добавить новые ...".

enter image description here

Таким образом, в настоящее время я думаю, что когда режим редактирования начинается, просто удалите строки «Добавить» из представления таблицы, а затем, когда режим редактирования завершится, добавьте их снова.

Я попытался сделать это, пройдя все строки, когда пользователь нажал кнопку редактирования, но кажется, что вы можете получить только те строки, которые в данный момент видны, используя cellForRowAtIndexPath:.

Таким образом, я могу удалить те, которые видимы, но как только пользователь прокручивает таблицу вниз, все еще остаются кнопки добавления для невидимых секций (во время инициализации редактирования).

Помогите!

Кто-нибудь знает, как я могу просто скрыть строки "Добавить" из каждого раздела, когда пользователь редактирует таблицу, а затем добавить их обратно после?

Я ищу те же функции, которые использует приложение контактов, когда пользователь редактирует контакт.

Ответы [ 4 ]

0 голосов
/ 07 июля 2013

вернуть YES из canEditCellAtIndexPath для каждой ячейки в разделе, а затем переопределить - (UITableViewCellEditingStyle)1001 *

0 голосов
/ 03 декабря 2011

Вы можете отобразить зеленую (+) кнопку в строке «Добавить строку», чтобы она совпала с удаляемыми строками.

Просто переопределите -tableView:editingStyleForRowAtIndexPath: в делегате табличного представления и верните UITableViewCellEditingStyleInsert дляэтот ряд.

0 голосов
/ 17 мая 2012

Как насчет удаления строки (строк) Add из фактического источника данных и простого вызова [tableView reloadData], а затем, когда режим редактирования вернется обратно, добавьте их обратно в источник данных и снова перезагрузите Data.

0 голосов
/ 01 декабря 2011

На самом деле вы уже закрыли ответ, просто используйте метод cellForRowAtIndexPath, чтобы выбрать ячейку, которую хотите скрыть, и установите для ее скрытого свойства значение YES. Вы делаете это!


О, мне жаль, что я не заметил, что вы используете групповой стиль, поэтому я предлагаю вам попытаться отделить кнопку добавления от других, например включить ее в один раздел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...