Это хорошая практика, чтобы поместить UICollectionView и UITableView в UIScrollView в iOS? - PullRequest
0 голосов
/ 28 апреля 2018

Я гуглил вопросы типа «Поместить представление таблицы / представления коллекции в представление прокрутки», но все эти вопросы задают вопрос о том, как решить некоторые из неожиданных вариантов поведения при этом, не многие задают вопрос, является ли это хорошая практика.

Я использовал react-native для разработки мобильных приложений. У них есть этот компонент под названием FlatList, вроде как UITableView в Swift. Однажды я поместил FlatList внутри ScrollView и реализовал неограниченную прокрутку, однако произошло много странных вещей:

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

  2. Когда я пытался получить текущую позицию прокрутки и сделать анимацию на ее основе, это всегда давало мне неправильную позицию прокрутки

  3. и т.д ...

Я написал то же самое в Swift, ни одна из перечисленных выше проблем не возникла. Тем не менее, я хочу спросить, , могут ли быть какие-либо потенциальные проблемы при этом?

Чтобы помочь вам понять, почему я хотел бы поместить представление таблицы и коллекцию в представление прокрутки, посмотрите на это изображение (Если вы могли бы предложить какой-то другой способ сделать то же самое, не имея представления таблицы / коллекции внутри прокрутка, это было бы здорово!)

enter image description here

Обновление

Я помещаю все в представление прокрутки, потому что я хочу отключить клавиатуру при перетаскивании, когда пользователь вводит текстовое представление

1 Ответ

0 голосов
/ 28 апреля 2018

TableView и CollectionView наследуются от ScrollView. Таким образом, упомянутое вами поведение уже относится к этим компонентам.

«Лучшей» практикой было бы иметь только 1 CollectionView (без ScrollView или TableView) и создать свой собственный CollectionViewLayout, чтобы вы могли определять разную компоновку и прокрутку для каждого из ваших разделов, но это может оказаться слишком сложным, поскольку вы придется реализовать это поведение самостоятельно.

Другой подход заключается в создании основного CollectionView с другим CollectionView внутри для каждого из ваших разделов (1 для фотографий, 1 для «добавления местоположения», «тега человека» и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...