Загрузка различных представлений в зависимости от категории данных на касание ячейки просмотра таблицы iPhone SDK - PullRequest
1 голос
/ 19 мая 2010

В моей заявке я хочу табличное представление с различной структурой ячеек в зависимости от категории загружаемых в него данных [у меня есть разные категории, такие как видео, редакционные и т. Д. С различной структурой данных, например, у видео есть одна метка, у редакционной статьи есть 3 этикетки и т. Д.]. Я могу загружать разные nib-файлы, основываясь на данных, поступающих из парсера xml.

Теперь, когда ячейка коснулась, я хочу показать ее подробный вид на новом viewController. Поэтому мой вопрос заключается в том, можно ли использовать только 1 viewController для отображения различных полей в зависимости от категории данных в ячейке. Или мне нужно создавать разные viewControllers для каждой из категорий?

Ответы [ 3 ]

1 голос
/ 19 мая 2010

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

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

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

1 голос
/ 19 мая 2010

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

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

1 голос
/ 19 мая 2010

Это зависит от того, какие данные у вас есть в каждой из ваших категорий. Если формат данных в каждой категории различен, и вы уже знаете это, спроектируйте viewControllers так, чтобы они непосредственно считывали данные и отображали их по мере необходимости. ViewController должен сам обрабатывать логику отображения.

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

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

Редактировать: было бы разумно использовать разные подклассы viewControllers, помня шаблон проектирования - «Закрыто для модификации и открыто для расширения».

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