Проведите пальцем, чтобы удалить весь раздел в UITableView - PullRequest
0 голосов
/ 07 января 2019

У меня есть UITableView, который имеет переменное количество секций , а каждый раздел имеет переменное количество строк . Каждый раздел содержит заголовок раздела, нижний колонтитул раздела и строки для этого раздела. Они отображаются и отображаются внутри контейнера. Все до сих пор работает как ожидалось. Чтобы продемонстрировать, как выглядит мой UITableView:

current tableview

Сейчас я пытаюсь реализовать возможность пролистывания влево на всего раздела , чтобы заголовок раздела, строки внутри этого раздела и нижний колонтитул этого раздела перемещались влево и отображали другой UIView. Я могу проводить ячейки отдельно, но включение этой функции во всех разделах вызвало головную боль в течение последних двух дней. Вот чего я хотел бы достичь:

desired result

Я думал о реализации UIGestureRecognizers, но боюсь, что они могут конфликтовать с моим UITableView. Кроме того, я начал реализовывать это, но я не знал бы, как переместить только раздел, на котором был проведен влево.

Тогда я подумал, что мог бы реализовать UIScrollView в качестве контейнера для каждого раздела. Как мне это сделать, пока остается для меня загадкой, но представляется возможным решение, если это можно будет сделать.

Кроме того, у меня нет идей, и я застрял на том, как это должно быть сделано. Это то, чего я до сих пор не нашел в Интернете - по крайней мере, каких-то рабочих примеров, поэтому у меня нет вдохновения о том, как добиться эффекта.

Поэтому я хотел бы спросить, есть ли у кого-нибудь представление о том, как это может работать, и что я должен иметь в виду при реализации этого. Будем благодарны за все подсказки, указывающие мне на рабочее решение!

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

Ответы [ 2 ]

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

Мне удалось подобрать подобное решение. Я беру прямоугольник раздела с помощью rect (forSection: int), добавляю UIPanGestureRecognizer, в котором я добавляю UIView поверх UITableView, если касания начались, я вычисляю местоположение пальца и позволяю следовать за cudtom UIView. Когда достигается определенная точка (100 от левого края UITableView), секция удаляется с помощью deleteSections (indexSet: with:).

Это работает. Он выполняет свою работу, но добавляет к разделу оверлей, а не толкает его влево.

Поэтому я спрашиваю, кто-нибудь знает, есть ли какой-либо способ установить смещение для одного конкретного раздела или для области UIView, чтобы я мог сместить прямоугольник сечения. Я был в состоянии установить ContentOffset для всего UITableView, но это не желаемый результат.

Если нет способа сделать это, я бы подумал о том, чтобы сохранить имеющееся у меня решение или, возможно, реализовать функцию моментального снимка, которая делает снимок экрана и обрезает прямоугольник кадра, добавляя этот UIImage в пользовательское представление для имитации раздела , Но это было бы сложно. Любые идеи для этой идеи также приветствуются.

0 голосов
/ 07 января 2019

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

...