Перетащите весь раздел вместо одной строки в UITableView - PullRequest
0 голосов
/ 26 ноября 2018

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

- Finish thesis
-- Interview representatives
-- Rewrite chapter 8
-- Create cover sheet

- Clean the house
-- Do the dishes
-- Mop living room
-- Clean windows in bathroom

Iуспешно реализовали способ перестановки строк с помощью DragDelegate и DropDelegate из UITableView.Я удостоверяюсь, что все подвижно (протокол canMoveRowAt возвращает true).Чтобы дать вам представление о том, как я это делаю:

func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {

    let toDoName = toDoList[indexPath.section].toDoItem[indexPath.row].toDoName
    let itemProvider = NSItemProvider(object: toDoName as NSString)
    let dragItem = UIDragItem(itemProvider: itemProvider)
    dragItem.localObject = item
    return [dragItem]

}

В MoveRowAt() Я проверяю, что данные соответствующим образом изменены, удаляя данные из sourceIndexPath и вставляя их в destinationIndexPath.Это прекрасно работает.

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

Могу ли я сделать это тем же методом?Я выяснил, что нет никаких протоколов для разделов, как есть для строк (moveRowAt существует, но moveSectionAt нет, то же самое для canMoveSectionAt).

Я нашел функцию, tableView.moveSection(section, toSection: section), которую явероятно, нужно будет использовать.Но как я могу реализовать перетаскивание и прикрепить его к заголовку раздела?Нужно ли использовать пользовательский UILongPressGestureRecognizer?Любые советы или доступные библиотеки о том, как этого добиться?

1 Ответ

0 голосов
/ 26 ноября 2018

Я не знаю, возможно ли перетаскивать весь раздел, но, вероятно, нет, сейчас API может дать согласие на перетаскивание строки;Единственное, что вы можете сделать, это создать CollectionView с tableView в каждом элементе, чтобы вы могли перетащить элемент, содержащий ваш tableView

...