iPhone SDK: Как создать динамическую ячейку / UITable с различными uicontrols - PullRequest
0 голосов
/ 11 августа 2011

В моем универсальном приложении для iOS 4 мне нужно показать страницу, похожую на форму, в начале моего приложения. В зависимости от xml, который я получаю, я может должен спросить пользователей их имя, пол, дату рождения. и т.д. Я не могу точно знать, что я получу. Я создам некоторую логику, как интерпретировать те «подсказки интерфейса», отправленные сервером.

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

Сценарий:

Я _may_ получаю 6 вопросов, которые нужно задать, 3 из них относятся к типу вопросов выбора, например, да / нет (я предпочитаю использовать флажок табличного представления здесь, а не сборщик или сегментирован), остальные три вопроса - это имя, фамилия и Гендерные вопросы, которые на самом деле являются отдельными вопросами, и я хочу рассматривать их как отдельные вопросы, но показывать их как один вопрос пользователю и показывать их в одной ячейке 3 небольших текстовых поля по горизонтали.

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

Есть предложения?

Ответы [ 2 ]

1 голос
/ 13 августа 2011

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

Какой UITableViewCell использовать?:

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

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

Вот вопрос, который нужно решить аналогичной проблемой:

2 различных типа пользовательских UITableViewCells в UITableView (При таком подходе вы можете избежать проблемы reuseIdentifier, которая может возникнуть

Другая целевая проблема (iPhone /iPad):

Другим важным требованием является то, что вы работаете на iPhone и iPad, поэтому в вашем UITableViewCell вы должны определить, на каком устройстве вы сейчас работаете, и выполнить пользовательскую инициализацию.

Определение устройства (iPhone, iPod Touch) с помощью iPhone SDK

Это избавит вас от создания другого набора UITableViewCell исключительно для iPad.иметь по крайней мере такую ​​большую динамику в вашем коде.

Управление различными типами вопросов:

Для различных типов вопросов я бы предложил вам установить перечисление typedef, котороеневероятно гибок в использовании внутри вашего приложения (так как он безопасен от типов) и легко обновляется после изменения ваших требований.

HTH

0 голосов
/ 26 января 2013

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

Какой UITableViewCell использовать? :

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

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

Вот вопрос, который должен решить подобную проблему:

2 различных типа пользовательских UITableViewCells в UITableView (При таком подходе вы можете избежать проблемы reuseIdentifier, которая может возникнуть

Другая задача (iPhone / iPad):

Другое важное требование заключается в том, что вы работаете на iPhone и iPad, поэтому в UITableViewCell вы должны определить, на каком устройстве вы работаете сейчас, и выполнить пользовательскую инициализацию.

Определение устройства (iPhone, iPod Touch) с помощью iPhone SDK

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

Управление различными типами вопросов:

Для сравнения

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