【发布时间】:2015-01-20 00:27:00
【问题描述】:
我正在尝试从 AppDelegate.m 调用 ViewController.m 中的函数 LoadWebpage。
我已使用 URL 方案启用我的应用程序,这样 Safari 中的“urlscheme://?querystring”链接会打开我的应用程序。我正在 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 让我知道这是否有效。
-
这两种方式都不起作用。自动完成也没有任何大小写的“视图控制器”。
-
看看这个问题stackoverflow.com/questions/10015567/…答案展示了如何访问根viewController
-
我尝试这样做,然后调用 LoadWebpage 函数,但它只是结束了 lldb 的调试?抱歉,我对此不是很有经验,不知道这意味着什么或如何解决它。
-
用确切的错误更新答案。或许能看到发生了什么。
标签: ios objective-c iphone xcode uiviewcontroller