Несколько пользовательских типов ячеек на таблицу UITableView (iPhone) - PullRequest
4 голосов
/ 07 июля 2011

Я всюду искал в Apple.Developer и Stackflow и не нашел четкого, стандартного и правильного способа справиться с этим.По сути, я хочу представить, как представить в таблице более одного типа ячейки.Кроме того, в приложении есть и другие таблицы, которые потенциально могут использовать некоторые настраиваемые ячейки.

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

Ниже перечислены различные способы, которые я узнал, вы можете сделать это.Я попробовал каждый из них, и все они работают, но я не уверен в «правильном» способе и способе, которым Apple не откажется.

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

2) настраиваемый класс ячеек с отдельным XIB - каждая настраиваемая ячейка имеет свой собственный заголовок / реализацию / XIB и является подклассом UITableViewCell,Для отдельной ячейки в XIB владельцем файла задан определенный класс UITableViewController.Вид здесь также был удален.

3) настроенная ячейка в той же XIB, что и XIB контроллера представления - я читал, что это плохо.Контроллер должен быть связан только с одним представлением в иерархии.Я включил настраиваемую ячейку в XIB на том же уровне, что и представление, а затем просто связал ее с IBOutlet контроллера.

4) отдельный общий XIB - это, по сути, полигон для настраиваемых ячеек .Вид здесь также был удален.XIB содержит несколько ячеек, и каждая ячейка связана с определенным подклассом UITableViewCell.Заголовок и файл реализации содержат определение и реализацию для каждой ячейки, которая разделена на подклассы из UITableViewCell.В контроллере, который показывает таблицу, метод cellForRowAtIndexPath проходит по циклу NSBundle для этого общего XIB и находит ячейку, связанную с конкретным типом подкласса UITableViewCell.Тогда это возвращает это.Это прекрасно работает для повторного использования в приложении, но что-то говорит мне, что это плохо.

Как правильно подходить для разных типов ячеек в одной таблице?

Ответы [ 3 ]

4 голосов
/ 07 июля 2011

Я обнаружил, что вариант №2, пользовательский класс ячеек с отдельным XIB, проще всего поддерживать.

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

2 голосов
/ 07 июля 2011

Проще говоря, если это работает для вас, тогда сделайте это.Все эти идеи являются жизнеспособными решениями.

Лично я бы пошел за ними в следующем порядке: 2, 1, 4, 3. Хотя это всего лишь мои личные предпочтения.

PS Ни один изэти идеи заставят Apple отклонить ваше приложение.

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

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

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

Реализация опции 2 или 4 не влечет за собой большой разницы.В варианте 2 вы загружаете перья один за другим, в варианте 4 вы загружаете уникальный перо, а затем управляете массивом объектов (представлений / ячеек в вашем случае), которые вы получаете.

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