您的位置:首页 > 产品设计 > UI/UE

JSPatch学习系列-UI进阶

2016-01-20 14:37 507 查看

02-UI进阶

学习大纲

TableView数据源方法

TableView代理方法

dealloc引发的问题

示例代码

初始化导航控制器根控制器

defineClass('ViewController', {
viewDidLoad:function() {
// 调用OC中的viewDidLoad方法
self.ORIGviewDidLoad();
// 设置title
self.setTitle('首页');
// 绑定导航栏右侧按钮事件
self.bindEvent();
},
touchesBegan_withEvent:function(touches, event) {
self.ORIGtouchesBegan_withEvent(touches, event);
require('UIBarButtonItem, UIButton');
var btn = self.navigationItem().rightBarButtonItem();
},
bindEvent:function() {
require('UIBarButtonItem, UIButton');
// 控制器跳转
var btnRight = self.navigationItem().rightBarButtonItem();
btnRight.setTarget(self);
btnRight.setAction('pushToTableViewController');
},
pushToTableViewController:function() {
require('TableViewController');
var destVc = TableViewController.alloc().init();
self.navigationController().pushViewController_animated(destVc, 1);
}
})


设置TableViewController

defineClass('TableViewController : UITableViewController', {
viewDidLoad:function() {
dataSource = null;
// self.ORIGviewDidLoad();
self.setTitle('列表页');
self.setupData();
self.tableView().setRowHeight(55);  // 设置行高
// self.tableView().setDelegate(self);
// self.tableView().setDataSource(self);
var flag = self.tableView().hidden();
// console.log('hidden=' + flag);  // 判断视图是否是隐藏状态

// 调用控制器中已经存在的方法
self.warning_complete(0, block("", function(){
console.log('重写dealloc方法,来回 push & pop 会报错,why?');
}));

self.warning_complete(1, block("", function(){
console.log('如何定义带block的方法?');
}));
},
/********************************************************************************************/
// 重写dealloc方法,来回 push & pop 会报错,why?
/********************************************************************************************/
// dealloc:function() {
//  self.ORIGdealloc();
//  console.log('dealloc');
// },
tableView_numberOfRowsInSection:function(tableView, section) {
return dataSource.length;
},
// 创建cell
tableView_cellForRowAtIndexPath:function(tableView, indexPath) {
require('UITableViewCell');
var cell = tableView.dequeueReusableCellWithIdentifier('Cell');
if (cell == false) {
cell = UITableViewCell.alloc().initWithStyle_reuseIdentifier(0, 'Cell');
}
return cell;
},
// 赋值cell
tableView_willDisplayCell_forRowAtIndexPath:function(tableView, cell, indexPath) {
cell.textLabel().setText(dataSource[indexPath.row()]);
},
tableView_didSelectRowAtIndexPath:function(tableView, indexPath) {
// var alert = require('UIAlertView').alloc().init();
// alert.setTitle('提示');   // 标点符号不能是中文状态下的!否则报错:`SyntaxError: Invalid character '\u65307'`
// alert.setMessage('选中了第 ' + indexPath.row() + ' 行');
// // alert.setDelegate(self);
// alert.addButtonWithTitle('取消');
// alert.addButtonWithTitle('确定');
// // var alert = require('UIAlertView').alloc().initWithTitle_message_delegate_cancelButtonTitle_otherButtonTitles("title", "message", self, "取消", null);
// alert.show();

// 调用带有block参数的方法
self.add_b_complete(0, indexPath.row(), block("BOOL, int", function(flag, sum) {
if (flag) { console.log("sum=" + sum)};
}));
// self.add(3, 7, function(){
//  console.log('匿名函数。。。');
// });
// self.add(3, 7, self.complete);
},
// 为表格提供数据源
setupData:function() {
var data = self.getProp('data');
if (data) {return data;};
data = [];
var length = 50;
for (var i = length - 1; i >= 0; i--) {
data.push('hello world - ' + (length-i-1));
};
self.setProp_forKey(data, 'data');
dataSource = data;
},
/********************************************************************************************/
// 如何定义带block的方法?
/********************************************************************************************/
add:function(num1, num2, xxx) {
var sum = num1 + num2;
xxx();
// self.complete(sum, 1);
},
complete:function() {
console.log('sum=' + 1 + ' flag=' + 1);
}
});
/*
function complete1(sum, flag) {
console.log('sum=' + sum + ' flag=' + flag);
}
*/
/*
// 这里不能有“//”这种行内注释?否则就报错:SyntaxError: Unexpected end of script
// sdfsdf
*/


源码下载:点我下载源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: