我想從AppDelegate.m中調用ViewController.m中的函數LoadWebpage
。在URL方案之後從AppDelegate調用ViewController方法OpenURL
我已經啓用我的應用程序的URL計劃,使得「Safari瀏覽器://?查詢字符串」鏈接在Safari打開我的應用程序。我正在捕獲AppDelegate中的url方案(我可以通過記錄這個工作告訴),並且想用查詢字符串填充一個全局變量,然後調用我的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];
有錯誤「屬性 '視圖控制器' 不是類型的對象發現「 AppDelegate的'」。
我猜我需要綜合對開放viewcontroller的引用,但我不能找到如何做到這一點的信息。這是處理這個問題的最好方法嗎?
編輯:基於燕的評論下面,我試圖添加
ViewController* mainController = (ViewController*) self.window.rootViewController;
[mainController LoadWebpage];
而不是[self.ViewController loadWebpage];
,但它只是結束調試並LLDB?
餘噸嗨你的意思寫self.viewController讓我知道,如果這有效。 – Yan 2014-11-21 19:22:47
這種方式無效。 auto complete沒有任何大小寫的「viewcontroller」。 – user4279803 2014-11-21 19:24:25
看看這個問題http://stackoverflow.com/questions/10015567/how-do-i-access-my-viewcontroller-from-my-appdelegate-ios答案顯示瞭如何訪問根viewController – Yan 2014-11-21 19:30:37