Как перетащить несколько uitableveiwcells на ios?

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

2 ответа

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

РЕДАКТИРОВАТЬ:
Для несмежных, ленивым решением было бы позволить пользователю выбрать любые ячейки, а затем, после того как они перетащили одну из них, просто переместите все остальные выделенные ячейки прямо под ней.

Вы могли бы поэкспериментировать с UITableView и посмотреть, позволит ли вам оживить другие выбранные ячейки (с deleteRowsAtIndexPaths:withRowAnimation:), как только перетаскивание обнаружено (возможно, с UITableViewDelegate"s tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:). Вы также можете увидеть, позволит ли вам перерисовать / изменить размер ячейки, когда она начнет перетаскивать, - тогда вы можете сделать так, чтобы она выглядела как z-слоистый стек, или тотемить их в высокую ячейку при перетаскивании.

Конечно, я предполагаю, что все выбранные ячейки будут иметь одинаковую позицию назначения. Я не могу обернуть голову вокруг несмежных источников к несмежным местам назначения в одно перетаскивание. Если пользователь перетаскивает 3 слота, означает ли это, что вы добавляете 3 к позициям всех выбранных ячеек? Что если это выведет клетку за пределы? Даже если вы определились с некоторыми правилами для нечетных случаев, подобных этим, и фактически реализовали это чудовище, оно никогда не будет удобным для пользователя.

Легкого выхода нет. Вы должны управлять анимацией и движением самостоятельно. Может быть, вы можете взять копию ячеек, которые вы хотите переместить, и показать анимацию перемещения к месту назначения. Когда анимация останавливается, меняйте источник данных.

Другие вопросы по тегам