iphone-sdk, обмен данными между несколькими представлениями - PullRequest
2 голосов
/ 02 апреля 2009

Возьмите следующий пример.

Один tabBarController переключается между двумя представлениями, каждое из которых обрабатывается их собственным контроллером представления (скажем, viewController1, viewController2).

У меня есть класс с именем Widget, у которого есть свойство name.

Итак, у меня есть код в view1, который будет читать содержимое текстового поля и устанавливать свойство 'name' моего объекта виджета.

Я хочу иметь код в view2, чтобы прочитать свойство 'name' объекта виджета и отобразить где-нибудь.

1. Где бы я объявил экземпляр моего класса виджетов? во вкладке BarController?

2. Если да, то как мне получить доступ к этому экземпляру в двух других моих контроллерах представления?

Заранее спасибо!

1 Ответ

6 голосов
/ 02 апреля 2009

Вы можете поместить свой класс виджета как свойство в Делегат приложения.

@interface youAppDelegate : NSObject <UIApplicationDelegate> {
   Widget *myWidget;
}

@property (readonly) Widget *myWidget;

@end

Затем создайте его экземпляр в сообщении "applicationDidFinishLaunching" делегата вашего приложения.

Как только вы это сделаете, вы сможете получить доступ к myWidget из любой точки проекта, например:

youAppDelegate *ad = (youAppDelegate*)[UIApplication sharedApplication].delegate;
Widget *w = [ad myWidget];

Этот код может быть отлично скомпилирован и выполнен в viewController1, viewController2 или даже на tabBarController.

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