Я новичок в MVC и XCode, и у меня возникли проблемы с переводом моего концептуального понимания MVC на проектирование и реализацию конкретных классов. Я надеюсь получить небольшой совет о том, как структурировать контроллеры и представления для получения нужного пользовательского интерфейса. Это для приложения OS X (не iOS).
Моя объектная модель - это 3 объекта: Batch
, который имеет несколько текстовых элементов и массив продуктов. Product
имеет некоторые текстовые элементы и массив изображений. Image
- это в основном путь к месту хранения изображения.
Идея состоит в том, что в основном представлении будет отображаться список миниатюр и заголовков всех пакетов. Щелчок по одному из них очистит экран и отобразит эскизы всех продуктов в этой партии. При нажатии на продукт экран очищается и открывается страница сведений о продукте, на которой отображаются данные о продукте и миниатюры всех изображений. Щелчок по миниатюре изображения отображает изображение, занимающее все окно.
Возникают вопросы по типу
- Какие контроллеры я использую? От чего я наследую?
- Могу ли я использовать настоящие контроллеры или
NSObject
в списке объектов XIB? - Какие представления я использую? От чего я наследую?
- Какие представления могут быть в XIB, а какие должны быть добавлены динамически?
Ясно, что я невежественен и не нахожу хороших руководств, объясняющих «Почему?». Любое направление приветствуется, поскольку мои предыдущие попытки запутаны и почти наверняка нарушают условности и стандартные практики.
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
Похожие вопросы
Новые вопросы
xcode
Xcode - интегрированная среда разработки Apple (IDE). ПРИМЕЧАНИЕ. ИСПОЛЬЗОВАНИЕ: используйте этот тег только для вопросов о самой IDE Xcode, но не для общих тем программирования для Mac или iOS. Используйте [какао] для вопросов программирования на Mac и [какао-касание] или [iOS] или [Swift] для вопросов программирования на iOS.