最近空闲,把以前接触到的关于JS与OC之间是如何交互的给大家总结一下,同时附上网页端的代码,让大家看起来轻松明了!
1、iOS端需要处理的事情
先添加javascriptcore.framework的系统库
#import <JavaScriptCore/JavaScriptCore.h>添加头文件
-(void)makeWebView
{
UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0,64,SCREEN_WIDTH,SCREEN_HEIGHT-64)];
webView.delegate=self;
[self.view addSubview:webView];
[SVProgressHUD showWithStatus:@"正在加载中……"maskType:SVProgressHUDMaskTypeBlack];
self.href=[@"http://" stringByAppendingString:self.href];
//准备webView的属性
NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:self.href]];
[webView loadRequest:req];
webView.scalesPageToFit =YES;//让页面大小适配
JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
context[@"userToAppointment"] = ^() {
//项目名称、医生名字、预约价格、商品id
NSArray *args = [JSContextcurrent Arguments];
AppointOrderViewController * appointOrder = [[AppointOrderViewController alloc]initWithNibName:@"AppointOrderViewController" bundle:nil];
appointOrder.projectName =[NSString stringWithFormat:@"%@",args[0]];//不转成字符串的话,给控件“Lable”赋值时会为空
appointOrder.appointDoctor = [NSString stringWithFormat:@"%@",args[1]];
appointOrder.appointPrice =[NSString stringWithFormat:@"%@",args[2]];
appointOrder.projectID = [NSString stringWithFormat:@"%@",args[3]];
appointOrder.shopName=[NSString stringWithFormat:@"%@",args[0]];
[self.navigationController pushViewController:appointOrder animated:YES];
};
context[@"doctorPage"]=^(){
//医生id
NSArray *doctorIdArr = [JSContext currentArguments];
DoctorHomePageViewController * docHomePage = [[DoctorHomePageViewController alloc] initWithNibName:@"DoctorHomePageViewController" bundle:nil];
docHomePage.doctID =doctorIdArr[0];
[self.navigationController pushViewController:docHomePage animated:YES];
};
}
2、网页端的代码2.1点击网页的按钮调用网页中自己的方法: