iOS开发——UI篇Swift篇&玩转UItableView(三)分组功能
UItableView分组功能
class UITableViewControllerGroup: UIViewController, UITableViewDataSource, UITableViewDelegate { var titleString:String! @IBOutlet var titleLabel:UILabel! @IBOutlet var listTableView : UITableView! //索引字母数组 var arrayOfCharacters:[String] = ["A","B","C","D","E","F","G"] var wordLibrary:Dictionary <String, [String]> = [:] //定义数组 var items:[String] = ["UITextView", "UISegmentedControl", "UISlider", "UISwitch", "UIActivityIndicatorView", "UIProgressView", "UIPageControl", "UIStepper", "UIImageView", "UIWebView", "UIScrollView"] //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(true) } override func viewDidLoad() { super.viewDidLoad() titleLabel.text = titleString //创建6个数组,6个组使用 var a_Word:[String] = ["aim","air","aircraft","airplane","aloft","alphabetically"] var b_Word:[String] = ["baa","babble","back","baldric","ballooning","bandbook","bandy","bankruptcy","baptistery"] var c_Word:[String] = ["cablegram","cacti","cacophonous","cairn","calcimine","calculus","caldron","candelabrum","candlestick","canker"] var d_Word:[String] = ["dagger","daguerreotype","dame","damnation","dapper","daredevil","darwin","dateless","daw","date","deacon"] var e_Word:[String] = ["eagerly","early","earn","earnestness","earthworm","eastbound","east","easel","earthwork","ease","easterly","eastern"] var f_Word:[String] = ["face","facial","facilitate","fact","faction","facilities","facing","facsimile","facet","factitious","facility","factor","factorage"] var g_Word:[String] = ["gazetteer","generalization","geneva","gibbet","glasshouse","gnarl","goad","going","grace","gradual","grammar","grandiose","grandstand","granulate"] //将数组添加到字典里面 wordLibrary.updateValue(a_Word, forKey: "A") wordLibrary.updateValue(b_Word, forKey: "B") wordLibrary.updateValue(c_Word, forKey: "C") wordLibrary.updateValue(d_Word, forKey: "D") wordLibrary.updateValue(e_Word, forKey: "E") wordLibrary.updateValue(f_Word, forKey: "F") wordLibrary.updateValue(g_Word, forKey: "G") //给TableView添加表头页眉 var headerView:UIView = UIView(frame: CGRectMake(, , listTableView.frame.size.width, )) var headerlabel:UILabel = UILabel(frame: headerView.bounds) headerlabel.textColor = UIColor.blackColor() headerlabel.backgroundColor = UIColor.clearColor() headerlabel.font = UIFont.systemFontOfSize() headerlabel.text = "TabelView 页尾表头 页眉" headerView.addSubview(headerlabel) headerView.backgroundColor = UIColor.redColor() listTableView.tableHeaderView = headerView //给TabelView添加页尾 var footerView:UIView = UIView(frame: CGRectMake(, , listTableView.frame.size.width, )) var footerlabel:UILabel = UILabel(frame: footerView.bounds) footerlabel.textColor = UIColor.blackColor() footerlabel.backgroundColor = UIColor.clearColor() footerlabel.font = UIFont.systemFontOfSize() footerlabel.text = "TabelView 页尾视图" footerView.addSubview(footerlabel) footerView.backgroundColor = UIColor.greenColor() listTableView.tableFooterView = footerView //刷新TableView listTableView.reloadData() } 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 { return arrayOfCharacters.count } //tableView数据源:返回每组行数 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { var key = arrayOfCharacters[section] as String var tempWord:[String]! = wordLibrary[key] return tempWord.count } //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 key = arrayOfCharacters[indexPath.section] as String var tempWord:[String]! = wordLibrary[key] //从数组取对应值给cell赋值 // cell!.textLabel.text = tempWord[indexPath.row] //2015年4月10号修改 cell!.textLabel?.text = tempWord[indexPath.row] return cell!; } //每一组的头部,添加一个视图 func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { var view:UIView = UIView(frame: CGRectZero) view.backgroundColor = UIColor(red: 0xf0/255.0, green: 0xf0/255.0 , blue: 0xf6/255.0 , alpha: 1.0) var label:UILabel = UILabel(frame: CGRectMake(, , , )) label.textColor = UIColor(red: 0x8f/255.0, green: 0x8f/255.0, blue: 0x94/255.0, alpha: 1.0) label.backgroundColor = UIColor.clearColor() label.font = UIFont.systemFontOfSize() view.addSubview(label) label.text = arrayOfCharacters[section] return view; } //每一组的末端,添加一个视图 func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? { var view:UIView = UIView(frame: CGRectZero) view.backgroundColor = UIColor.orangeColor() var label:UILabel = UILabel(frame: CGRectMake(, , , )) label.textColor = UIColor.blackColor() label.backgroundColor = UIColor.clearColor() label.font = UIFont.systemFontOfSize() view.addSubview(label) label.text = "第\(section) 组结束,本组页脚视图" return view; } func sectionIndexTitlesForTableView(tableView: UITableView) -> [AnyObject]! { return arrayOfCharacters //返回索引数据源 } //点击索引,移动TableView的组位置 func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int { var tpIndex:NSInteger = //便利索引值 for character in arrayOfCharacters { //判断索引值 和 组名称相等,返回组坐标 if character == title { return tpIndex } tpIndex++ } } //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循环的写法 最常规写法 // 传统写法 ...
随机推荐
- 数往知来 三层架构 <十四>
三层架构_1 一.三层 就是把程序的各个部分都分离,尽量的底耦合,做到分工明确.责任明确 第一层:Dal 数据访问层 第二层 :Bll 业务逻辑判断层 第三层: UI 界面显示层 比如说数据 ...
- [Android][Audio] audio_policy.conf文件分析
不同的Android产品在音频的设计上通常是存在差异的,而这些差异可以同过Audio的配置文件audio_policy.conf来获得.在Android系统中音频配置文件存放路径有两处,存放地址可以从 ...
- Flex通信-Java服务端通信实例
转自:http://blessht.iteye.com/blog/1132934Flex与Java通信的方式有很多种,比较常用的有以下方式: WebService:一种跨语言的在线服务,只要用特定语言 ...
- php 开发最好的ide: PhpStorm
PhpStorm 跨平台. 对PHP支持refactor功能. 自动生成phpdoc的注释,非常方便进行大型编程. 内置支持Zencode. 生成类的继承关系图,如果有一个类,多次继承之后,可以通过这 ...
- 构建Spark作业
首先,要清楚,一个Java或Scala或python实现的Spark作业. 1.用sbt构建Spark作业 2.用Maven构建Spark作业 3.用non-maven-aware工具构建Spark作 ...
- SpringMVC处理Date类型的成员变量方法
原文链接:http://www.tuicool.com/articles/aYfaqa 在使用 SpringMVC 的时候,我们可能需要将一个对象从 View 传递给 Controller .而当这个 ...
- STM32 常用GPIO操作函数记录
STM32读具体GPIOx的某一位是1还是0 /** * @brief Reads the specified input port pin. * @param GPIOx: where x can ...
- 检测iOS的APP性能的一些方法
首先如果遇到应用卡顿或者因为内存占用过多时一般使用Instruments里的来进行检测.但对于复杂情况可能就需要用到子线程监控主线程的方式来了,下面我对这些方法做些介绍: Time Profiler ...
- socket的一个错误的解释SocketException以及其他几个常见异常
写socket程序有可能会遇见这个问题 其他信息: 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受. 这种情况我的 错误原因 ...
- IAP内购
IAPHelper.h // // IAPHelper.h // airplay // // Created by apple on 13-10-23. // Copyright (c) 2013年 ...