JSPatch 有提供一个平台服务省心省力-->http://jspatch.com/
集成开发环境
官网的提示还是很清楚的-->http://jspatch.com/Docs/SDK
//推荐写法 如果开发推荐本地测试
[JSPatch startWithAppKey:@"xxx"];
[JSPatch sync];
// 本地测试用 会自动访问Bundle的main.js
//[JSPatch testScriptInBundle];
JSPatch使用
查看Github地址
查看文档 基本上看完就有感觉了
JPTableViewController(官方Demo)
defineClass('JPViewController', {
handleBtn: function() {
//重写JPViewController 里的handleBtn方法
var tableViewCtrl = JPTableViewController.alloc().init()
self.navigationController().pushViewController_animated(tableViewCtrl, YES)
})
defineClass('JPTableViewController : UITableViewController <UIAlertViewDelegate>', ['data'], {
dataSource: function() {
var data = self.data();
if (data) return data;
var data = [];
for (var i = 0; i < 20; i ++) {
data.push("cell from js " + i);
}
self.setData(data)
return data;
},
numberOfSectionsInTableView: function(tableView) {
return 1;
},
tableView_numberOfRowsInSection: function(tableView, section) {
return self.dataSource().length;
},
tableView_cellForRowAtIndexPath: function(tableView, indexPath) {
var cell = tableView.dequeueReusableCellWithIdentifier("cell")
if (!cell) {
cell = require('UITableViewCell').alloc().initWithStyle_reuseIdentifier(0, "cell")
}
cell.textLabel().setText(self.dataSource()[indexPath.row()])
return cell
},
tableView_heightForRowAtIndexPath: function(tableView, indexPath) {
return 60
},
tableView_didSelectRowAtIndexPath: function(tableView, indexPath) {
var alertView = require('UIAlertView').alloc().initWithTitle_message_delegate_cancelButtonTitle_otherButtonTitles("Alert",self.dataSource()[indexPath.row()], self, "OK", null);
alertView.show()
},
alertView_willDismissWithButtonIndex: function(alertView, idx) {
console.log('click btn ' + alertView.buttonTitleAtIndex(idx).toJS())
}
})
注意事项
JSPatch 平台错误 error = "Document not found"
JSPatch js和oc变量混淆 字符串 / 数组 / 字典 操作问题