извлечение многоразовых частей пользовательского интерфейса в какао-сенсоре - представления или контроллеры - как это сделать?

Допустим, я разрабатываю приложение для iPad, которое представляет пользователю экран. Экран содержит несколько «элементов управления», которые для данного примера могут быть простыми метками со знаками +/-, которые увеличивают / уменьшают целочисленное значение, представленное меткой, гарантируя, что значение не превышает максимальное число, определенное для каждого элемента управления (числовое значение вверх / down, но это может быть что угодно, имеющее простую логику). По мере манипулирования целыми числами вычисляются некоторые значения, доступные только для чтения (метки). Более того, каждый «элемент управления» должен реагировать на жест касания (и, например, увеличивать значение на 10). Я хочу задать вопрос: как мне спроектировать такой экран с точки зрения MVC, используемого в какао-сенсоре? Учитывая, что контроллер представления, который управляет экраном, называется MainController:

  • Должны ли числовые элементы управления вверх / вниз быть отдельными представлениями, содержащими всю логику (как-то нарушающую шаблон MVC), которые добавляются в MainController.view?
  • Должны ли числовые элементы управления вверх / вниз быть отдельными viewControllers (с привязанным к ним представлением, конечно), содержащими всю логику (более разумный подход с точки зрения MVC - я прав?)
  • Обрабатываются ли прикосновения / жесты на уровне контроллера представления или на уровне представления?

person adrin    schedule 20.09.2010    source источник
comment
Если вы нашли мой ответ полезным и совпадающим с вашим вопросом, отметьте его как решающий, чтобы поднять вашу частоту принятия (в настоящее время у вас всего 41%).   -  person Till    schedule 14.01.2011


Ответы (1)


  • Элементы управления вверх / вниз должны быть заполнены функцией через View-Controller на экране (MainController).
  • Нет необходимости в дополнительных View-Controllers на этом уровне управления - на самом деле, Apple предлагает, чтобы для таких общих ситуаций существует только один View-Controller (MainController).
  • Прикосновения / гостевые запросы обрабатываются на уровне View-Controller (MainController).
person Till    schedule 20.09.2010
comment
спасибо за Ваш ответ! Значит ли это, что если я хочу иметь примерно 5 элементов управления вверх / вниз, мне нужно добавить 10 кнопок и 10 выходов и 10 IBActions для viewcontroller? Это кажется антипаттерном, но, может быть, я что-то упускаю :) вверх / вниз для просмотра? (Если да, могу ли я спроектировать само представление в Iterface Builder) - person adrin; 21.09.2010
comment
Если вы хотите легко читать и манипулировать значениями элемента управления, вы создадите выход для этого элемента управления. Итак, да, 10 выходов кажутся разумными и должны сделать ваш код читабельным. Вы можете использовать одно и то же действие для всех элементов управления. Элемент управления будет передан действию (отправителю), но тогда у вас может быть код, чтобы определить, какой элемент управления был задействован, чтобы вы могли настроить связанные связанные поля. (Если homeLoanCtrl изменится, измените поле homeLoanTxt ...) Так что, возможно, разные интерфейсы не так уж и плохи. - person Dave; 06.10.2010
comment
Очень похожее обсуждение: stackoverflow.com/questions/ 1264296 / - person Dave; 06.10.2010