2015-01-08 2 views
0

У меня есть вопрос проектирования кода для всех вас.UITextField Table View Cells - iOS

Мне нужно построить динамическую форму , то есть форма не будет содержать одинаковые поля при каждом ее загрузке.

Мне присваивается список полей, которые должны содержать все формы, все они являются текстовыми вводами. Список, который я даю, - это базовый JSON, описывающий атрибуты, которые имеют каждое поле (то есть имя, isRequired, maxLength, minLength).

Я использую UITableViewCell с UITextField для создания формы. Чтобы проверить и отправить форму, мне нужно сохранить сильные ссылки на каждую ячейку или текстовое поле каждой ячейки, чтобы я мог получить данные, которые были введены для каждого поля.

Как создать форму на лету, сохраняя при этом сильные ссылки на каждую ячейку (или текстовое поле)?

Я рад ответить на любые уточняющие вопросы, которые у вас есть.

+0

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

ответ

2

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

Тогда ваш источник данных таблицы - это массив строк. По мере изменения текста текстовых полей обновите соответствующую строку (ее немного сложно получить из текстового поля в правый индекс в массиве, но его часто обсуждают в SO.Мой любимый подход - @danh solution here, который может применяться к любому подзону ячейки).

+0

Вы говорите, что я должен обновлять ячейку представления таблицы каждый раз, когда символ вводится в текстовое поле? Это кажется немного интенсивным. – tentmaking

+0

Хорошо, я чувствую себя немного тупым опубликованием последнего комментария. Теперь я понимаю, что я просто обновляю строку в модели и использую модель для отслеживания значений в текстовых полях. Для чего используется модель. хаха, спасибо брату. – tentmaking

+0

рад, что это помогло. проверьте протокол делегата uitextfield. вы можете обновляться по мере изменения текста или после его редактирования (теряет первый ответчик). – danh

0

Вы выбираете динамическийtableView над статического один.

Как вы можете видеть, ios sdk - всего около MVC модель.

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

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

0

Я бы этого не сделал.
Что происходит, когда таблица прокручивается? Вам действительно нужен объект модели, который отражает таблица, используя таблицу как модель, неразумно. Объявите свойство типа NSMutableDictionary или массив или что-то в этом роде, используйте это, чтобы хранить свои данные и обновлять их каждый раз при изменении текстового поля.

Смежные вопросы