iOS开发——UI篇Swift篇&玩转UItableView(二)高级功能
UItableView高级功能
class UITableViewControllerAF: UIViewController, UITableViewDataSource, UITableViewDelegate { var titleString:String! @IBOutlet var titleLabel:UILabel! @IBOutlet var listTableView : UITableView! @IBOutlet var editDoneButton : UIButton! //定义数组 var items:[String] = ["北京", "上海", "天津", "山东", "河北", "湖北"] //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(true) } //编辑按钮事件 @IBAction func editButtonClick() { if editDoneButton.titleForState(UIControlState.Normal) == "编辑" { //如果按钮标题是编辑,则将表视图设置成可编辑状态,并修改button标题为“完成” listTableView.setEditing(true, animated: true) editDoneButton.setTitle("完成", forState: UIControlState.Normal) }else { //如果按钮标题是完成,则设置成不可编辑,并修改button标题为“编辑” listTableView.setEditing(false, animated: true) editDoneButton.setTitle("编辑", forState: UIControlState.Normal) } } //自定义添加按钮事件 @IBAction func addButtonClick() { //数组添加新数据 items.insert() //初始化一个NSIndexPath对象,指定要添加的单元格位置 let indexPath = NSIndexPath(forRow: , inSection: ) //在指定位置上添加一个新的单元格 self.listTableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic) } override func viewDidLoad() { super.viewDidLoad() titleLabel.text = titleString // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */ //MARK: - UITableViewDelegate //tableView数据源:返回几节(组) func numberOfSectionsInTableView(tableView: UITableView) -> Int { } //tableView数据源:返回每一节行数 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return items.count //返回数组数量 } //行缩进 func tableView(tableView: UITableView, indentationLevelForRowAtIndexPath indexPath: NSIndexPath) -> Int { return indexPath.row } //tableView 数据源:每一行高度 func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { } //tableView数据源:每一行内容 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { //Cell标示符,代表一系列 // OC:使用static, swift:使用let let cellIdentifier: String = "cellIdentifier" //通过cellIdentifier标示符取没有使用的Cell //有可能不存在,所以使用:optional var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? UITableViewCell //如果cell取到是空 if cell == nil { // no value //创建新的cell //cell样式:UITableViewCellStyle.Default //cell标示符:cellIdentifier cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdentifier) //设置字体 // cell!.textLabel.font = UIFont.systemFontOfSize(14) //2015年4月10号修改 cell!.textLabel?.font = UIFont.systemFontOfSize() //设置选中cell样式 cell!.selectionStyle = .Gray; //设置cell后面箭头样式 cell!.accessoryType = .DisclosureIndicator; } //去当前行 var row=indexPath.row as Int //从数组取对应值给cell赋值 // cell!.textLabel.text = self.items[row] //2015年4月10号修改 cell!.textLabel?.text = self.items[row] //设置cell图片 // cell!.imageView.image = UIImage(named:"cellImage.png") //2015年4月10号修改 cell!.imageView?.image = UIImage(named:"cellImage.png") return cell!; } //确定每一行 是否可以编辑 func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool { return true } //返回每一行 操作类型 func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle { //最后一行允许插入 { return .Insert } return .Delete //允许删除操作 } //在编辑状态,可以拖动设置cell位置 func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { return true } //编辑cell事件 func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) { //如果是删除操作 if editingStyle == UITableViewCellEditingStyle.Delete { items.removeAtIndex(indexPath.row)//将数据源数组删除对应行数数据 //table表删除该行 tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Left) } //如果是插入一行操作 else if editingStyle == UITableViewCellEditingStyle.Insert { //数组添加一条新数据 items.append("新城市 \(items.count)") //表视图插入一条单元格 tableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Middle) } } //移动cell事件 func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, toIndexPath: NSIndexPath) { if fromIndexPath != toIndexPath{ //获取移动行对应的值 var itemValue:String = items[fromIndexPath.row] //删除移动的行的值 items.removeAtIndex(fromIndexPath.row) //如果移动区域大于现有行数,直接在最后添加移动的值 if toIndexPath.row > items.count{ items.append(itemValue) }else{ //没有超出最大行数,则在目标位置添加刚才删除的值 items.insert(itemValue, atIndex: toIndexPath.row) } } } //tableView代理:点击一行 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { //释放选中效果 tableView.deselectRowAtIndexPath(indexPath, animated: true) } }
iOS开发——UI篇Swift篇&玩转UItableView(二)高级功能的更多相关文章
- iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...
- iOS开发——新特性Swift篇&Swift 2.0 异常处理
Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...
- iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍
UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...
- iOS开发——网络编程Swift篇&Alamofire详解
Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...
- ios开发——实用技术总结Swift篇&swift常用开发技术总结
swift常用开发技术总结 懒加载:属性,数组(字典),控件... 数组(懒加载): lazy var shops:Array<Dictionary<String, String>& ...
- iOS开发——网络编程Swift篇&(八)SwiftyJSON详解
SwiftyJSON详解 最近看了一些网络请求的例子,发现Swift在解析JSON数据时特别别扭,总是要写一大堆的downcast(as?)和可选(Optional),看?号都看花了.随后发现了这个库 ...
- ios开发——实用技术篇Swift篇&地址薄、短信、邮件
//返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...
- iOS开发——图形编程Swift篇&CAShapeLayer实现圆形图片加载动画
CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形 ...
- iOS开发零基础--Swift篇 元组
元组的介绍 元组是Swift中特有的,OC中并没有相关类型 它是什么呢? 它是一种数据结构,在数学中应用广泛 类似于数组或者字典 可以用于定义一组数据 组成元组类型的数据可以称为“元素” 元组的定义 ...
- iOS开发零基础--Swift篇 循环
循环的介绍 在开发中经常会需要循环 常见的循环有:for/while/do while. 这里我们只介绍for/while,因为for/while最常见 for循环的写法 最常规写法 // 传统写法 ...
随机推荐
- Sublime Text 3快捷键
Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W:关闭所有打开文件 Ctrl+Shift+V ...
- yum 安装 php5.6 和 mysql5.6
安装 PHP rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm; rpm - ...
- ubuntu 彻底删除软件包
找到此软件名称,然后sudo apt-get purge ......(点点为为程序名称),purge参数为彻底删除文件,然后sudo apt-get autoremove,sudo apt-get ...
- Hadoop 1.1.2 Eclipse 插件使用——异常解决
permission denied user 1.修改配置文件在conf/hdfs-site.xml文件中添加如下内容: <property> <name>dfs.permis ...
- 解决Windows时间同步失败问题!系统时间同步设置!
使用NTP协议可以让你的计算机自动与服务器上的时间同步.从而保持最准确的时间. 中国国家授时中心的IP地址是:210.72.145.44 (至少我一直没ping通) 在Windows XP/2000/ ...
- POJ2533Longest Ordered Subsequence(DP)
http://poj.org/problem?id=2533 在经典不过的DP题目了.... #include <map> #include <set> #include &l ...
- c++字符串机理
在windows编程中,由于编码方式的不同和c与c++的不同而造成了许多复杂的有关字符串之间的转换 首先,windows编码方式有ANSCLL和UNICODE,前者是单字符的,后者是双字符的. 然后, ...
- Notes on Probabilistic Latent Semantic Analysis (PLSA)
转自:http://www.hongliangjie.com/2010/01/04/notes-on-probabilistic-latent-semantic-analysis-plsa/ I hi ...
- UI:转自互联网资料
1.UIWindow和UIView和 CALayer 的联系和区别? 答:UIView是视图的基类,UIViewController是视图控制器的基类,UIResponder是表示一个可以在屏幕上 ...
- javascript 汉字生成拼音
在网上下载的一个汉字生成拼音的js,很有用,大家一起分享! var PinYin = {"a":"/u554a/u963f/u9515","ai&qu ...