Являются ли написанные пользователем сгруппированные UITableView действительно способом реализации стандартных форм на iOS? - PullRequest
4 голосов
/ 18 июля 2011

Что это за

Я заметил, что многие приложения, которые я использую, имеют похожий способ реализации форм (наборов). Например:

enter image description here enter image description here

По сути, это та же схема, что и в приложении "Настройки".

Моя проблема

Когда мне нужно сделать что-то подобное, я, в основном, создаю сгруппированный UITableView, определяю, сколько групп и сколько у меня полей, и т. Д. cellForRowAtIndexPath в основном превращается в большой оператор switch, который задает правильную форму поле как accesoryView. Я заранее заполняю все поля формы в коде и проверяю их правильность.

Однако у меня такое чувство, что должен быть намного лучший путь. Это похоже на ужасное количество повторяющегося кода. И код, который мне очень трудно сделать красивым.

Что я хочу

В идеале, я бы хотел написать свою форму полностью из Interface Builder, потому что она действительно интуитивно понятна для меня. Итак, создание UITableView и его содержимого в Интерфейсном Разработчике. Простое создание формы в IB, конечно, просто, но не в то же время помещая поля в сгруппированное табличное представление - что мне действительно нужно, потому что оно выглядит красиво и согласованно.

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

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

Итак: действительно ли мой подход является лучшим способом отображения таких форм? Можно ли улучшить детали? Есть ли способ, которым я упустил из виду существующие библиотеки iOS, чтобы помочь мне?

1 Ответ

0 голосов
/ 18 июля 2011

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

Если вы предпочитаете использовать IB, который я полностью понимаю, тогда вы можете создать каждый UITableViewCell в IB, разложить его по объектам, связать IBOutlet, а затем включить его таким образом в свой UITableView. Это также упрощает настройку действий и делегатов для объектов, которые вы используете, например, UITextField s и UISwitch es.

...