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 */
源码下载:点我下载源码
相关文章推荐
- ContactsUI(选择联系人).md
- iOS开发-UIScrollView原理
- iOS UI、Xcode、调试、代码等常见问题总汇(持续更新中)
- AsyncQueryHandler的使用
- Gradle学习基础(3):build脚本基础知识
- easyui实现ValidateBox自定义验证数据库中是否存在重复字段
- session中或者request中同名字的参数会被后来者覆盖
- 最长公共子序列LongestCommonSubsequence
- Java语言中String 、StringBuffer 、StringBuilder的区别
- ssh提示输入密码回显
- ContactsUI(修改联系人)
- ssm+easyui(框架的搭建)
- 转 UCGUI字体解释
- android query的用法
- UITableView取消某一个cell的分割线
- 给 UIButton、UILabel添加下划线
- .net邮件错误 :The specified string is not in the form required for a subject.
- SQL Server 2016 查询存储(Query Store)示例
- SQL Server 2016 查询存储(Query Store)示例
- x-requested-with 判断是否是Ajax异步请求