iPad, App Store, интерфейс, предложения по управлению товарами - PullRequest
0 голосов
/ 28 октября 2011

Я пытаюсь создать пользовательский интерфейс, подобный представленному в приложении App Store (устройство iPad). Это своего рода прокручиваемая сетка (горизонтальная прокрутка), где каждый элемент состоит из обзора приложения, которое можно продать в магазине приложений (каждый элемент состоит из изображения, заголовка и т. Д.). Моя цель такая же. Я заинтересован в разработке UIScrollView, где элементы расположены и отображаются. Каждый элемент пользовательского интерфейса состоит из изображения и описания.

Исходя из предыдущих соображений, я разработал ItemViewController.h / .m и относительный .xib (ItemView.xib). Каждый элемент может реагировать на такие действия, как нажатие. ItemViewController.m управляет этим касанием, поскольку он является владельцем его файла. Элемент создается с помощью метода initWithNibNamad в классе MainViewController.h / .m. Этот класс содержит UIScrollView. Затем представление, связанное с элементом, добавляется в UIScrollView.

Поскольку возможно иметь более одного элемента, не могли бы вы дать мне несколько советов по управлению элементами ItemViewController в MainViewController? Нужно ли хранить каждую ссылку на ItemViewController в словаре (например)? В первый момент я также решил установить MainViewController в качестве владельца файла ItemView.xib, но я думаю, что проблема управления элементами может остаться.

Спасибо заранее. Надеюсь, все ясно.

Ответы [ 2 ]

1 голос
/ 13 ноября 2011

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

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

Обратите внимание, что при таком расположении один элемент в вашей модели может быть представлен в интерфейсе несколько раз. Скажем, вы представляете список предметов, помеченных как «Гигант», и список предметов, помеченных как «Зеленый». Если бы у вас был продукт «Jolly Green Giant», он был бы представлен в обоих списках. Но поскольку один и тот же элемент в вашей модели является источником для обоих, любые изменения одного автоматически отражаются другим. Как правило, это желаемое поведение (если вы удалили «Jolly Green Giant» из списка «Green», вам также нужно удалить его из списка «Giant»).

Для получения дополнительной информации ознакомьтесь с шаблоном Model View Controller (MVC).

1 голос
/ 28 октября 2011

Взгляните на AQGridView - он должен быть более чем способен сделать то, что вам нужно.

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