Передача данных из ViewController в AppDelegate - PullRequest
0 голосов
/ 09 июля 2011

Как я могу выполнить метод в AppDelegate из MainViewController.

[super performSelector:@selector(doSomething)];

и метод doSomething определен в AppDelegate.m

-(void) doSomething {

NSLog(@"Method Executed");

}

1 Ответ

3 голосов
/ 09 июля 2011

Если вы хотите, чтобы это было для iOS, просто позвоните:

[[[UIApplication sharedApplication] delegate] doSomething];

должен это сделать. На Mac OS вы используете NSApplication вместо. Поскольку ваш делегат приложения не является (не так ли) суперклассом вашего контроллера основного представления, вы не можете сделать это, как в вашем вопросе.

Но также, лучше путь должен быть:

[[UIApplication sharedApplication] sendAction:@selector(doSomething)
                                           to:nil
                                         from:self];

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

Здесь - документ для получения дополнительной информации об этом методе.

...