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(三)分组功能的更多相关文章

  1. iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用

    swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...

  2. iOS开发——新特性Swift篇&Swift 2.0 异常处理

    Swift 2.0 异常处理 WWDC 2015 宣布了新的 Swift 2.0. 这次重大更新给 Swift 提供了新的异常处理方法.这篇文章会主要围绕这个方面进行讨论. 如何建造异常类型? 在 i ...

  3. iOS开发——UI精选OC篇&UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍

    UIApplication,UIWindow,UIViewController,UIView(layer)简单介绍 一:UIApplication:单例(关于单例后面的文章中会详细介绍,你现在只要知道 ...

  4. iOS开发——网络编程Swift篇&Alamofire详解

    Alamofire详解 预览图 Swift Alamofire 简介 Alamofire是 Swift 语言的 HTTP 网络开发工具包,相当于Swift实现AFNetworking版本. 当然,AF ...

  5. ios开发——实用技术总结Swift篇&swift常用开发技术总结

    swift常用开发技术总结 懒加载:属性,数组(字典),控件... 数组(懒加载): lazy var shops:Array<Dictionary<String, String>& ...

  6. iOS开发——网络编程Swift篇&(八)SwiftyJSON详解

    SwiftyJSON详解 最近看了一些网络请求的例子,发现Swift在解析JSON数据时特别别扭,总是要写一大堆的downcast(as?)和可选(Optional),看?号都看花了.随后发现了这个库 ...

  7. ios开发——实用技术篇Swift篇&地址薄、短信、邮件

    //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...

  8. iOS开发——图形编程Swift篇&CAShapeLayer实现圆形图片加载动画

    CAShapeLayer实现圆形图片加载动画 几个星期之前,Michael Villar在Motion试验中创建一个非常有趣的加载动画. 下面的GIF图片展示这个加载动画,它将一个圆形进度指示器和圆形 ...

  9. iOS开发零基础--Swift篇 元组

    元组的介绍 元组是Swift中特有的,OC中并没有相关类型 它是什么呢? 它是一种数据结构,在数学中应用广泛 类似于数组或者字典 可以用于定义一组数据 组成元组类型的数据可以称为“元素” 元组的定义 ...

  10. iOS开发零基础--Swift篇 循环

    循环的介绍 在开发中经常会需要循环 常见的循环有:for/while/do while. 这里我们只介绍for/while,因为for/while最常见 for循环的写法 最常规写法 // 传统写法 ...

随机推荐

  1. 【LeetCode】118 & 119 - Pascal's Triangle & Pascal's Triangle II

    118 - Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, ...

  2. PHP 代码质量检测工具的安装与使用

    代码统计工具 PHPLOC安装:wget https://phar.phpunit.de/phploc.phar chmod +x phploc.phar sudo mv phploc.phar /u ...

  3. 为什么要Cssreset

    1.CssReset是什么?由于html标签在各浏览器的默认样式解析出来的有所不同.例如<ul>标签在IE.firefox.chrome浏览器下默认边距是不一样的.各浏览器的默认样,会给我 ...

  4. C语言 百人拉百灯问题

    题目: 有100人,编号从1到100; 另有100盏灯,编号也从 1到100. 现要求每人去拉能被自己编号整除的所有电灯, 例如编号为1者应把所有的灯都拉一遍, 编号为2者应把所有编号为偶数的灯都拉一 ...

  5. xcode 6.4 安装Alcatraz失败解决方法

    Alcatraz Xcode6.4安装不了解决方法http://www.cocoachina.com/bbs/read.php?tid=310380 版权声明:本文为博主原创文章,未经博主允许不得转载 ...

  6. geeksforgeeks@ Minimum Points To Reach Destination (Dynamic Programming)

    http://www.practice.geeksforgeeks.org/problem-page.php?pid=91 Minimum Points To Reach Destination Gi ...

  7. JVM系列二:GC策略&内存申请、对象衰老

    JVM里的GC(Garbage Collection)的算法有很多种,如标记清除收集器,压缩收集器,分代收集器等等,详见HotSpot VM GC 的种类 现在比较常用的是分代收集(generatio ...

  8. oracle学习 五 使用存储过程创建一个重置密码为123456的功能(持续更新中)

    首先写一个函数是MD5的方法 create FUNCTION GET_MD5 ( p_str in varchar2) RETURN varchar2 IS BEGIN RETURN Utl_Raw. ...

  9. My集合框架第二弹 二叉树的实现

    package com.wpr.collection; import java.util.NoSuchElementException; public class BinarySearchTree&l ...

  10. 规范打log

    在公司工作快3年了,debug用的最多的还是分析程序打出来的log. 怎样打log,打什么样的log,也是很值得研究的事情.好的打log方式,能够很快的分析和解决问题. 下面总结两点: 1.在log中 ...