События в стиле ActionScript в Objective-C? - PullRequest
0 голосов
/ 07 июля 2010

Я новичок в Objective-C, пришедший из разработки Flex / Actionscript.

У меня есть приложение для iPhone с соответствующим делегатом UIApplicationDelegate MyAppDelegate - у него есть UIWindow.

Вместо добавления кнопок, надписей и прочего непосредственно в окно, я полагаю, что я должен создать дочерний класс UIViewController для каждого экрана, который я хочу создать.Когда должен отобразиться этот экран, я добавляю вид соответствующего контроллера в окно в качестве подпредставления.Когда должен появиться другой экран, я должен выскочить из окна и любой другой вид и добавить новый вид.Надеюсь, я все понял правильно ...

Я хочу, чтобы каждый контроллер представления знал только о своих собственных вещах, поэтому, скажем, я хочу вызвать представление A из представления B, в ActionScript я бы добавилкнопка в A запускает событие, которое будет поймано в объекте-владельце представления A (может быть приложением), которое может предпринять надлежащие действия (удалить представление A, создать экземпляр представления B и отобразить его).

Как мнесделать это в Objective-C?

Ответы [ 2 ]

1 голос
/ 07 июля 2010

UIControl, такой как UIButton, может иметь любое количество прослушивателей событий, зарегистрированных с помощью:

- (void)addTarget:(id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;

Целью будет контроллер представления, для которого вы хотите получить метод, а действие - метод, который выхочу позвонил.Для кнопки события обычно просто UIControlEventTouchUpInside.Если целью является ноль, событие будет проходить вверх по цепочке респондента, пока респондент не выполнит действие.Если вы передадите @selector(buttonClicked:), то у цели должен быть следующий метод:

-(IBAction) buttonClicked:(id)sender;

Отправителем будет кнопка, на которую нажали.IBAction эквивалентен пустому типу возврата.Вы можете привязать действие в Интерфейсном Разработчике, если предпочитаете, чтобы оно выполнялось программно.

Когда должен отображаться другой экран, я должен выскочить из окна любого другого вида и добавить новый вид.1012 *

Это в основном правильно, но обычно вы используете мета-контроллер вида, например UINavigationController, для управления контроллерами представления.Даже если вы не используете пользовательский интерфейс, который может представлять мета-контроллер, удобно управлять переключением видов за вас.

1 голос
/ 07 июля 2010

Если вы исходите из Actionscript, вам может быть интересно посмотреть на рамку PureMVC для цели C .Используя PureMVC, вы создадите комбинацию посредников, команд и моделей для взаимодействия приложений.

С PureMVC вы регистрируете уведомление с помощью facade, и вы определяете слушателей в ваших посредниках для ответа на них.Это довольно близко к модели событий, к которой вы привыкли в Actionscript.(На моей последней работе мы добавили несколько категорий к UIResponder, чтобы убрать часть ненужных действий при этом).Если вы создаете приложение значительно большего размера, я бы посоветовал вам взглянуть на него;это, безусловно, помогло нам сохранить все управляемые.

Если вы не хотите использовать стороннюю библиотеку, вам следует определить код манипуляции представлением в вашем MyAppDelegate и использовать [UIApplication sharedApplication] метод класса для доступа к глобально совместно используемому экземпляру.

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