Вызов метода контроллера просмотра из делегата приложения
Я пытаюсь вызвать метод в контроллере представления из делегата приложения, но Xcode говорит, что не существует метода класса для селектора 'myMethodHere'. Здесь мой код:
AppDelegate.m:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[..]
[MainViewController myMethodHere];
[..]
return YES;
}
MainViewController.m:
-(void) myMethodHere {
[..]
}
Ответы
Ответ 1
Я бы попробовал
MainViewController * vc = [[MainViewController alloc]init];
[vc myMethodHere];
[vc release];
- Обязательно импортируйте свой MainViewController в файл делегата приложения
.m
- убедитесь, что вы добавили "myMethodHere" в файл MainViewController
.h
Ответ 2
Вы пытаетесь вызвать метод класса, когда хотите вызвать метод экземпляра. Если диспетчер представлений является контроллером представления root, вы должны иметь возможность называть его таким образом:
UIWindow *window = [UIApplication sharedApplication].keyWindow;
MainViewController *rootViewController = window.rootViewController;
[rootViewController myMethodHere];
Если это не контроллер корневого представления, вам придется найти другой способ получить экземпляр, а затем вызвать метод, как в последней строке выше.
Ответ 3
Если вы хотите получить доступ к контроллеру представления на доске объявлений, вы можете использовать этот блок кода из AppDelegate:
MainViewController *rootViewController = (MainViewController*)self.window.rootViewController;
[rootViewController aMethod];
Не забудьте добавить импорт.
Ответ 4
В Swift вы можете записать это следующим образом
UIApplication.sharedApplication().keyWindow?.rootViewController?.yourMethodName()
Ответ 5
Попробуйте написать
-(void) myMethodHere;
in MainViewController.h