Как изменить порядок разделов UITableView? - PullRequest
0 голосов
/ 17 мая 2018

На этот вопрос 2009 года не было ответа, и это одно из немногих упоминаний этой проблемы в Интернете.

Проблема: я хочу изменить порядок секций UITableView таким же образом, как я могу сделать со строками (т. Е. Путем перетаскивания).

Я вижу, как это работает: вы включаете редактирование таблицы, появляются индикаторы переупорядочения. Когда вы начинаете перетаскивать заголовок раздела (или ячейку, действующую как поддельный заголовок раздела, что является неоптимальным [1]), все обычные ячейки «исчезают», поэтому вы можете перемещать только разделы (и это легче, если вы иметь более нескольких разделов).

LPRTableView , кажется, решает проблему, но это довольно сложно настроить правильно при переупорядочении разделов. Я пытался целый день с не очень большим успехом. Плюс [1].

Не очень хорошее, но приемлемое решение состоит в том, чтобы в заголовках были кнопки типа like (здесь можно использовать правильные заголовки), но это немного неловко.

Еще одно не очень удачное, но приемлемое решение - добавить дополнительный шаг (например, кнопку), который вызывает новый UITableView, отображающий только секции в качестве ячеек, и позволяет переупорядочивать их там. Работает нормально, но создает больше проблем, чем решает [2].

Я не вижу ничего в документах в виде, например, хука, вызываемого при начале / конце переупорядочения. Или, точнее, есть конец бита, но я не вижу начального.

Предложения


[1] Это позволяет в принципе размещать строки перед заголовком раздела, и вы должны вручную это отловить с плохим визуальным эффектом.

[2] Где бы я мог разместить такой элемент управления, особенно если у меня уже загруженный пользовательский интерфейс или я хочу, чтобы мой пользовательский интерфейс был минимальным?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

С помощью поддельного раздела вы можете нажать и перетащить этот раздел. Для этого есть два шага:

  1. Сначала заставьте делегата распознать, какой раздел uitableview под вашим нажатием (я надеюсь, что вы можете сделать это, я не буду вдаваться в подробнее).
  2. Затем поместите его в какой-то раздел, который необходимо заменить. Таким образом, для на смену мне приходят также две идеи.

    Сначала играю взгляды иерархия, что на вершине, что под ним, чем с помощью тегов или что-то еще, получи раздел под тобой, заменив поддельный раздел.

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

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

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

Я бы пошел по пути, чтобы свернуть все разделы и отображать только заголовки раздела как UITableViewCells.Тогда я бы переставил их с поведением перетаскивания по умолчанию.Когда закончите, загрузите старую не свернутую информацию обратно в ячейку табличного представления.

Тогда вам не нужно думать об анимации и придерживаться «Руководства по iOS».

...