Заставить делегата приложения выполнить действие? - PullRequest
2 голосов
/ 25 июня 2010

Мой класс AppDelegate_Phone имеет метод -(void)doSomething.Как я могу вызвать это из View Controller viewController?

Я пробовал:

[[[UIApplication sharedApplication] delegate] doSomething];

Не повезло.

doSomething not found in protocol

Правка.Действие выполняется, но предупреждение сохраняется в XCode.Что означает предупреждение?

Ответы [ 2 ]

3 голосов
/ 25 июня 2010

Вы должны привести делегата к вашему пользовательскому классу делегата, а затем вызвать doSomething. Пример кода ниже:

MyAppDelegate *myAppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
[myAppDelegate doSomething];
3 голосов
/ 25 июня 2010

Компилятор говорит вам, что именно не так (если он немного непроницаемый из-за вложенных выражений); -delegate возвращает объект, который отвечает протоколу UIApplicationDelegate, чей метод не является частью этого протокола.

Самый простой способ решить эту проблему с помощью Typecast:

[(AppDelegate_Phone *)[[UIApplication sharedApplication] delegate] doSomething];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...