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