Как мне использовать несколько UIViews для представления областей на экране? - PullRequest
0 голосов
/ 01 октября 2011

Я создаю приложение для ipad, которое имеет две основные области на экране:

  • Док с левой стороны содержит «вещи», которые вы можете перетащить на правую сторону
  • Свободный холст с правой стороны

В предположении, что представления Dock и Canvas добавлены как подпредставления в представление viewcontroller, мой вопрос связан с механикой перетаскивания«вещь» пальцем из док-станции на холст ... кому должен принадлежать вид, представляющий «вещь»?Должно ли это быть представление, которое представляет док-станцию ​​(а затем, когда она перемещается из док-станции на холст, я удаляю ее из док-станции и добавляю на холст)?Или он должен принадлежать корневому представлению viewcontroller?Или какой-то другой шаблон?

Мне было бы интересно узнать мнение людей о шаблонах проектирования, которые здесь используются.

Большое спасибо.Кстати, я подумал об использовании чего-то вроде cocos2d для этого, но на данный момент я бы хотел остаться со стандартным UIKit.

1 Ответ

0 голосов
/ 02 октября 2011

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

. В вашем случае контроллер управляет основным view и его подпредставлениями.Так что именно там вы бы реализовали логику перетаскивания одного объекта (также UIView) из одного подпредставления в другое.По вашим словам, перетаскиваемый объект «принадлежит» этому контроллеру.

Может быть, у вас есть другой класс, который отслеживает вещи на холсте, ваша "модель данных".Контроллер должен был это прочитать и записать изменения в него.Может быть, есть какой-то нестандартный рисунок, необходимый для видовПредставления будут реализовывать это поведение сами.Таким образом, вы также следуете принципу инкапсуляции 1011 *, который помогает писать повторно используемый код.

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