Я новичок в MVC и XCode, и у меня возникли проблемы с переводом моего концептуального понимания MVC на проектирование и реализацию конкретных классов. Я надеюсь получить небольшой совет о том, как структурировать контроллеры и представления для получения нужного пользовательского интерфейса. Это для приложения OS X (не iOS).

Моя объектная модель - это 3 объекта: Batch, который имеет несколько текстовых элементов и массив продуктов. Product имеет некоторые текстовые элементы и массив изображений. Image - это в основном путь к месту хранения изображения.

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

Возникают вопросы по типу

  • Какие контроллеры я использую? От чего я наследую?
  • Могу ли я использовать настоящие контроллеры или NSObject в списке объектов XIB?
  • Какие представления я использую? От чего я наследую?
  • Какие представления могут быть в XIB, а какие должны быть добавлены динамически?

Ясно, что я невежественен и не нахожу хороших руководств, объясняющих «Почему?». Любое направление приветствуется, поскольку мои предыдущие попытки запутаны и почти наверняка нарушают условности и стандартные практики.

2
Jeff 11 Июн 2013 в 02:28

1 ответ

Лучший ответ

Apple на самом деле предоставляет довольно хороший учебник / образец для конкретной ситуации, о которой вы спрашиваете: Создание интерфейса Master-Detail

Следует иметь в виду, что концепция MVC Apple немного отличается от «классического» шаблона MVC (во всяком случае, я подозреваю, что так сказал бы Мартин Фаулер). Я подозреваю, что вам будет легче с этим, если вы отложите в сторону существующую концепцию MVC и проработаете некоторые вводные примеры, предоставленные Apple.

На высоте 30 000 футов Какао, пожалуй, больше похоже на Model-View-Presenter или на паттерны Model-View-ViewModel, к сожалению названные. Также хорошо помнить, что общий шаблон может быть вложен или создан несколько раз (например, черепахи полностью вниз). В простейшем случае приложения на основе документов у вас будет подкласс NSDocument. Он будет владельцем модели и, как правило, будет отвечать за изменение модели, а также за чтение и запись на диск. Таким образом, это классический контроллер MVC. Кроме того, в шаблонах Xcode по умолчанию он будет владельцем окна и, следовательно, будет выполнять двойную функцию как «ViewController», который является какао-измом, который примерно эквивалентен «Presenter» в MVP. Представления обычно указываются в файле XIB, жизненный цикл которого управляется за вас платформой.

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

5
ipmcc 11 Июн 2013 в 16:56
Спасибо. Вчера я бегло просмотрел статью MAster / Detail и подумал, что это не совсем то, что я искал. Я вернусь к нему сегодня снова и, надеюсь, я буду достаточно знаком, чтобы адаптировать его к тому времени, когда я закончу.
 – 
Jeff
11 Июн 2013 в 17:39