任何想法如何从OBJ-C调用和发送参数给JS功能?iPhone:从OBJ-C调用并发送参数给JS功能
让我的html说我有JS
功能showPieChart(参数1,参数){...}
,并从我的OBJ C类在viewDidLoad中我要调用此函数。任何想法或例子?在此先感谢...
任何想法如何从OBJ-C调用和发送参数给JS功能?iPhone:从OBJ-C调用并发送参数给JS功能
让我的html说我有JS
功能showPieChart(参数1,参数){...}
,并从我的OBJ C类在viewDidLoad中我要调用此函数。任何想法或例子?在此先感谢...
添加这在UIWebViewDelegate的webViewDidFinishLoad::
NSString *functionCall = [NSString stringWithFormat:@"showPieChart(%@,%@)", param1, param2];
NSString *result = [webView stringByEvaluatingJavaScriptFromString:functionCall];
要设置视图控制器作为一个UIWebView的委托,您必须将<UIWebViewDelegate>
协议添加到@interface
标题和链接UIWebView的委托字段添加到视图控制器。
如果你的参数是一个数组里面,你可以一次通过一个与[array objectForIndex:i]
(i是对每个参数的指数)或全部提取出来一个与componentsJoinedByString:
NSArray *params = [NSArray arrayWithObjects:@"a",@"b",nil];
NSString *functionCall = [NSString stringWithFormat:@"showPieChart(%@)", [params componentsJoinedByString:@","]];
我猜你有带有加载网页的UIWebView。为了执行JavaScript,这样做:
NSString *result = [_webView stringByEvaluatingJavaScriptFromString:@"showPieChart()"];
1)实施UIWebViewDelegate
2)重写
- (BOOL)webView的:(UIWebView的*)aWebView shouldStartLoadWithRequest:(的NSURLRequest *)要求导航类型:(UIWebViewNavigationType)导航类型方法..
3)在此方法中,您将请求与定义的协议进行比较。
实施例:
的NSString * requestString = [[请求URL] absoluteString]; NSArray * components = [requestString componentsSeparatedByString:@“:”];
if ([components count] > 1 &&
[(NSString *)[components objectAtIndex:0] isEqualToString:@"myapp"]) {
if([(NSString *)[components objectAtIndex:1] isEqualToString:@"myfunction"])
{
NSLog([components objectAtIndex:2]); // param1
NSLog([components objectAtIndex:3]); // param2
// Call your method in Objective-C method using the above...
}
return NO;
}
4)修改JavaScript文件以创建protocole:
功能showPieChart(参数1,参数) { 了window.location = “MyApp的:” + “myfunction的:” +参数1 +“: “+ param2;
}
种源:HTTP://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/
好吧,这对我的作品......但如果我的参数是数组呢?如何发送数组?这是可行的吗? – Jim
查看答案更新。 – Jano
非常感谢!!!! – Jim