IOS: Как могут найти себя предварительно созданные объекты? - PullRequest
0 голосов
/ 07 февраля 2012

Я - полный новичок в IOS, поэтому вопрос может быть глупым, но я не могу увидеть дрова для деревьев:

Когда я начал новый проект в XCode 4.2, были предварительно созданы два файла реализации, т. Е. AppDelegate.m и ViewController.m.

Насколько я понимаю, они объявляют по одному классу каждый, и когда я запускаю приложение, два соответствующих объекта AppDelegate и ViewController предварительно создаются для меня операционной системой.

Теперь я делаю определенные вещи в AppDelegate и хочу обновить текстовую метку, которая является свойством ViewController.

Но я не нахожу способ ссылаться на объект ViewController.

Обычно внутри ViewController я могу обновить текстовую метку с помощью self.MyTextLabel = @"myText". Но AppDelegate находится "снаружи" и не создал экземпляр ViewController, поэтому указатель недоступен.

Кто-нибудь может помочь?

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Структура приложения для iOS может быть довольно подавляющей, но позвольте мне заверить вас, что здесь нет никакой магии.

Ваш main.m обычно содержит следующую строку:

UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

Как только приложение запустится, -(BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions в вашем AppDelegate.m будет вызываться. Здесь вы обычно найдете создание вашего контроллера представления. В вашем делегате приложения вы можете получить доступ к контроллеру представления через его свойство, в котором он хранится.

self.viewController.myTextLabel = @"myText";

Однако, если myTextLabel - это выход, установленный в файле XIB, свойство будет ссылаться на фактический UILabel только после того, как представление для вашего контроллера было загружено из XIB. Обычно это происходит, как только вы сами получаете доступ к свойству .view или после добавления контроллера представления в другой контроллер представления, например UINavigationController. (Однако это зависит от шаблона, который вы выбрали для своего проекта).

0 голосов
/ 07 февраля 2012

В xcode 4.2 вы можете найти создание объекта ViewController в методе:

-(BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

вы должны увидеть строку, которая выглядит как

self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease];
...