Как перетащить несколько uitableveiwcells на ios?
Я хочу перетащить много выделенных ячеек и записать их в свое приложение. Но я не знаю, как это сделать. Кажется, яблоко просто позволяет вам перетащить то, что я сделал. идея?
2 ответа
Если нормально требовать, чтобы выбранные ячейки были смежными, то вы можете обмануть, заменив их одной высокой ячейкой.
РЕДАКТИРОВАТЬ:
Для несмежных, ленивым решением было бы позволить пользователю выбрать любые ячейки, а затем, после того как они перетащили одну из них, просто переместите все остальные выделенные ячейки прямо под ней.
Вы могли бы поэкспериментировать с UITableView
и посмотреть, позволит ли вам оживить другие выбранные ячейки (с deleteRowsAtIndexPaths:withRowAnimation:
), как только перетаскивание обнаружено (возможно, с UITableViewDelegate
"s tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:
). Вы также можете увидеть, позволит ли вам перерисовать / изменить размер ячейки, когда она начнет перетаскивать, - тогда вы можете сделать так, чтобы она выглядела как z-слоистый стек, или тотемить их в высокую ячейку при перетаскивании.
Конечно, я предполагаю, что все выбранные ячейки будут иметь одинаковую позицию назначения. Я не могу обернуть голову вокруг несмежных источников к несмежным местам назначения в одно перетаскивание. Если пользователь перетаскивает 3 слота, означает ли это, что вы добавляете 3 к позициям всех выбранных ячеек? Что если это выведет клетку за пределы? Даже если вы определились с некоторыми правилами для нечетных случаев, подобных этим, и фактически реализовали это чудовище, оно никогда не будет удобным для пользователя.
Легкого выхода нет. Вы должны управлять анимацией и движением самостоятельно. Может быть, вы можете взять копию ячеек, которые вы хотите переместить, и показать анимацию перемещения к месту назначения. Когда анимация останавливается, меняйте источник данных.