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循环的写法 最常规写法 // 传统写法 ...
随机推荐
- Linux 的 screen用法
screen可以将任务挂起,即将任务放在后台,一般5个任务左右. 1.新建screen会话:直接输入screen命令或者screen -S [会话名称] 2.退出会话:按下组合键Ctrl+a并松开,此 ...
- Linux_搜文件
Linux 下搜文件, 通常先用 whereis 或 locate ,如果找不到,才以 find 搜寻!因为 whereis 与 locate 是利用数据库来搜寻数据,省时间! <<鸟哥的 ...
- QS之Intro
公司里用Questa Sim做仿真,其实跟ModelSim差不多,总结常用的命令如下. 1 启动 vsim -gui 2 编译 -- VCOM vcom [-2008 | -2002 | -93 | ...
- PySpark调用自定义jar包
在开发PySpark程序时通常会需要用到Java的对象,而PySpark本身也是建立在Java API之上,通过Py4j来创建JavaSparkContext. 这里有几点是需要注意的 1. Py4j ...
- mongdb创建自增主键(primary key)的相关讨论 - Jason.Zhi
根据mongodb官方文档介绍,如果在插入(insert)操作时,没有指定主键id,那么它会自动给插入行自动附上一个主键id.看起来不错,但是详细看看,就会发现这个id值有点复杂. 如下图: mong ...
- resharper 7.x 注册码key
user:dobit sn:G/YgFyekI7EL0oBc5YBWKI5WCi3pwXWP
- Working with Other Node Types
[Working with Other Node Types] [Shape Nodes Draw Path-Based Shapes] The SKShapeNode class draws a s ...
- 题目连接:http://acm.zznu.edu.cn/problem.php?id=1329
题目大意: 定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍.当且仅当差是17的倍数时,原数也是17的倍数 . 例如,34是17的倍数,因为3-20=-17是17的倍数:20 ...
- Intellij IDEA 14.x 中的Facets和Artifacts的区别
Facets和Artifacts的区别: Facets 表示这个module有什么特征,比如 Web,Spring和Hibernate等: Artifact 是maven中的一个概念,表示某个modu ...
- 再看Core Data中PSC陷入死锁的问题
在<Core Data Programming Guide>文档的Concurrency with Core Data这一章节中提到了“Use Thread Confinement to ...