UITableView: перемещение строки в пустой раздел - PullRequest
5 голосов
/ 17 марта 2009

У меня есть UITableView с некоторыми пустыми разделами. Я бы хотел, чтобы пользователь мог перемещать строки в них, используя стандартные элементы управления режимом редактирования. Единственный способ, которым я могу сделать это, - это иметь фиктивную строку в моих «пустых» разделах и попытаться скрыть ее, используя tableView:heightForRowAtIndexPath:, чтобы дать фиктивной строке высоту ноль. Это, кажется, оставляет это как 1-пиксельный ряд. Я, вероятно, могу скрыть это, создав специальный тип ячейки, которая просто заполнена [UIColor groupTableViewBackgroundColor], но есть ли лучший способ?

Это все в групповом режиме UITableView.

ОБНОВЛЕНИЕ: похоже, что перемещение строк в пустые секции возможно возможно без каких-либо уловок, но «чувствительность» достаточно плохая, поэтому вам НЕОБХОДИМЫ уловки, чтобы ее можно было использовать для обычных пользователей (которые выиграли не будьте достаточно терпеливы, чтобы медленно наводить ряд вокруг пустой секции, пока все не щелкнет).

Ответы [ 3 ]

1 голос
/ 20 декабря 2011

Я обнаружил, что в iOS 4.3 фиктивная строка должна иметь высоту не менее 1 пикселя, чтобы обеспечить желаемый эффект, позволяющий перемещать строку в этот раздел.

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

И, похоже, в iOS 5.0 нет пустых строк или специальных трюков.

0 голосов
/ 08 января 2011

Я обнаружил, что если вы вернете -1.0 из метода heightForRowAtIndexPath, он удалит 1 пиксельную линию.

0 голосов
/ 17 марта 2009

Управляя редактированием, вы можете отслеживать, находится ли табличное представление в режиме редактирования. Используйте этот флаг внутри cellForRowAtIndexPath, чтобы определить погоду или не отображать «пустую» строку. Находясь в «обычном» режиме, строка не будет отображаться, но когда пользователь нажимает «edit», cellForRowAtIndexPath должен быть вызван снова, и на этот раз решено отобразить строку. Детали того, как это сделать, зависят от вашего источника данных и от того, как вы приклеиваете его к дисплею. Если вы больше не получаете вызов, вы можете вручную вставить строки с помощью insertRowsAtIndexPaths / deleteRowsAtIndexPaths и / или вызвать reloadData, чтобы принудительно обновить.

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