Пользовательский UIView как UITableView делегат и источник данных? - PullRequest
7 голосов
/ 24 июня 2011

Я пишу довольно сложное приложение для iPad - мое первое более крупное.

Это приложение имеет несколько пользовательских UIViews, которые представляют довольно сложные данные, включая таблицу.Эти представления не занимают весь экран, и их может быть (и, скорее всего, будет) много на экране в любое время (хотя только один будет в «развернутом» состоянии, в котором показана таблица).

Вот базовый пример, который должен передать основной принцип: Made with the nice Antetype prototyping app

Обратите внимание, что эти вещи не должны быть в поповерах;вместо этого FamilyViews расширяются, чтобы показать их подробные данные.(И, пожалуйста, обратите внимание, что этот макет был создан только ради этого вопроса и имеет мало общего с тем, как будет выглядеть мой интерфейс; я знаю, что это не очень хороший дизайн экрана)

IЯ не знаю, кого поставить в качестве делегата и источника данных для этих пользовательских представлений:

  • Создание ViewController для текущего делегата экрана и источника данных нелегально, потому что этоне только одна таблица, которая является частью основного представления VC.
  • Создание самого View делегата и источника данных кажется мне немного странным, потому что мне кажется, что роль представления слишком активна;превращение его в полуконтроллер.
  • превращение базового объекта модели в источник данных кажется слишком тесно связанным, что также нарушает MVC.И это не отвечает на вопрос, кто должен быть делегатом.

Я стремлюсь сделать каждый из этих «FamilyViews» делегатом и источником данных для своих собственных таблиц.Действие в этих таблицах должно быть связано с делегатом FamilyView (ViewController), но это не должно быть проблемой, не так ли?

У кого-нибудь есть какие-то комментарии по этому поводу?

1 Ответ

6 голосов
/ 24 июня 2011

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

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

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

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