Я пытаюсь вызвать функцию LoadWebpage
в ViewController.m из AppDelegate.m.Метод вызова ViewController из AppDelegate после URL-схемы OpenURL
Я включил мое приложение с помощью схемы URL, так что ссылки «urlscheme: //? Querystring» в Safari открывают мое приложение. Я собираю схему URL в AppDelegate (могу сказать, зарегистрировав, что это работает) и хотел бы заполнить глобальную переменную с помощью запроса и затем вызвать мой метод LoadWebPage
, чтобы контроллер представления мог использовать глобальную переменную и открыть запрошенный веб-сайт в элементе управления WebView.
Я следую за this tutorial.
Это является AppDelegate.m:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
NSLog(@"Calling Application Bundle ID: %@", sourceApplication);
NSLog(@"URL scheme:%@", [url scheme]);
NSLog(@"URL query:%@", [url query]);
URLString = (NSString *)[url query]; //extern variable
[self.ViewController loadWebpage];
return YES;
}
И в ViewController.m:
- (void)LoadWebpage{
NSString *strURL=URLString; //more logic will be required to get the appropriate url from the query string.
NSURL *url = [NSURL URLWithString:strURL];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[self.webview loadRequest:urlRequest];
}
Но линия [self.ViewController loadWebpage];
имеет ошибку «Property 'ViewController' не найден на объект типа ' AppDelegate».
Я предполагаю, что мне нужно синтезировать ссылку на open viewcontroller, но я не могу найти информацию о том, как это сделать. Это лучший способ справиться с этим?
Edit: На основе комментарий Янь ниже, я пытался добавить
ViewController* mainController = (ViewController*) self.window.rootViewController;
[mainController LoadWebpage];
Вместо [self.ViewController loadWebpage];
но это только заканчивается отладка с lldb?
I т hink вы имели в виду писать self.viewController, дайте мне знать, если это работает. – Yan
Это не работает в любом случае. Автозаполнение также не имеет «viewcontroller» с любой капитализацией. – user4279803
Проверьте этот вопрос http://stackoverflow.com/questions/10015567/how-do-i-access-my-viewcontroller-from-my-appdelegate-ios Ответ показывает, как получить доступ к корневому viewController – Yan