2010-06-25 6 views
2

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

Я пробовал:

[[[UIApplication sharedApplication] delegate] doSomething];

Нет удачи.

doSomething not found in protocol

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

+0

Чей делегат? Контроллер просмотра? –

+0

Делегат приложения. В универсальном приложении 'AppDelegate_Phone' является классом, который я называю делегатом. – Moshe

ответ

3

Вы должны бросить делегата пользовательского класса делегата затем вызовите DoSomething. Пример кода приведен ниже:

MyAppDelegate *myAppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[myAppDelegate doSomething]; 
+0

Спасибо. Я использовал версию кода bbum. Я предпочитаю компактный код в определенных случаях, с большей ясностью. – Moshe

3

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

Самый простой способ решить это с приведения типов:

[(AppDelegate_Phone *)[[UIApplication sharedApplication] delegate] doSomething]; 
+0

Отлично. Благодарю. +1 для уплотнения в одну строку. – Moshe