iOS OC与JS,JS与OC交互

来源:互联网 发布:listview怎么刷新数据 编辑:程序博客网 时间:2024/05/20 00:53
本文主要介绍一下OC与JS交互的使用方法,首先苹果已经为我们封装好了一个与JS交互的框架,JavaScriptCore.framework,我们导入该框架,并导入头文件

#import <JavaScriptCore/JavaScriptCore.h>

该框架的使用方法特别简单,所有方法只需写在 

webViewDidFinishLoad方法中即可:


1、JS调用OC用两种方法,小弟只研究了最简单的一种

// 首先创建JSContext 对象(此处通过当前webView的键获取到jscontext)

JSContext *context = [webViewvalueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

context[@"ShowDetailPage"] = ^() {

   NSArray *args = [JSContextcurrentArguments];

   for (JSValue *jsVal in args) {

       NSString *paramStr = [jsVal toString];

   }

};

这样就简单的实现了一个JS调用OC的方法,下面我简单说明一下,context[@"方法名"],该方法名需要与前端的方法名一致,这样当H5页面调用该方法的时候,就会自动调用我们在webViewDidFinishLoad中写好的方法了;for (JSValue *jsVal in args)该遍历方法的意思是获取到前端传给我们的参数,我们获取到的参数用数组来接收,有可能有一个参数也有可能有多个参数;NSString *paramStr = [jsVal toString] 该方法的意思是将获取到得参数转成字符串来接收,因为前端传过来的参数全为字符串格式,所有我接收的方式也就全是字符串,如果传过来多个的参数,可以在遍历的外部初始化一个可变数组,然后在遍历内部将获取到得参数addobject到该可变数组内,这样,我们就简单的完成了一个JS调用OC的方法,我们可以在该方法内部根据获取到得参数做我们想做的事情了;

如果各位还不明白可以参考下边的链接,该链接里还讲了另外一种方法,跟上边这个方法区别不算太大,也很好理解

http://blog.csdn.net/lwjok2007/article/details/47058795


2、OC调用JS方法,目前也有两种方法可用,一个是JavaScriptCore框架中的方法,一个就是webView自带的方法

NSString *jsFunctStr = [NSString stringWithFormat:@"方法名('%@', '%@', '%@')", @"", @"", @""];

[context evaluateScript:jsFunctStr];

该方法为JavaScriptCore框架中的方法,注意的是,也需要创建context对象,例如1中的第一句话,@"方法名('%@', '%@', '%@')", @"", @"", @""这个就是调用了JS上的方法,后边是我们客户端为前端传得参数,前端拿到参数继续做其他的一些操作;


NSString *jsFunctStr = [NSString stringWithFormat:@"方法名('%@', '%@', '%@')", @"", @"", @""];

[webView stringByEvaluatingJavaScriptFromString:jsFunctStr];

这个就是webView自带的调用JS的方法,道理同上,以下是OC调用JS的参考链接:

http://blog.csdn.net/lwjok2007/article/details/47058101



注意:JS调用OC的方法需要全部写在webViewDidFinishLoad中,需要提前将这些方法渲染出来


这样基本上就可以实现OC调用JS,JS调用OC了,与前端配合,或者自己学习下JS,自己写个JS demo,多加练习,相信你很快就可以掌握



1 0
原创粉丝点击