iOS开发——UI篇Swift篇&玩转UItableView(三)分组功能

UItableView分组功能

 

  1 class UITableViewControllerGroup: UIViewController, UITableViewDataSource, UITableViewDelegate  {
  2     
  3     var titleString:String!
  4     
  5     @IBOutlet var titleLabel:UILabel!
  6     @IBOutlet var listTableView : UITableView!
  7     
  8     
  9     //索引字母数组
 10     var arrayOfCharacters:[String] = ["A","B","C","D","E","F","G"]
 11     
 12     
 13     var wordLibrary:Dictionary <String, [String]> = [:]
 14     
 15     
 16     
 17     
 18     //定义数组
 19     var items:[String] = ["UITextView",
 20         "UISegmentedControl",
 21         "UISlider",
 22         "UISwitch",
 23         "UIActivityIndicatorView",
 24         "UIProgressView",
 25         "UIPageControl",
 26         "UIStepper",
 27         "UIImageView",
 28         "UIWebView",
 29         "UIScrollView"]
 30     
 31     
 32     //返回按钮事件
 33     @IBAction func backButtonClick()
 34     {
 35         self.navigationController?.popViewControllerAnimated(true)
 36     }
 37     
 38     
 39     override func viewDidLoad() {
 40         super.viewDidLoad()
 41         
 42         titleLabel.text = titleString
 43         
 44         
 45         
 46         //创建6个数组,6个组使用
 47         var a_Word:[String] = ["aim","air","aircraft","airplane","aloft","alphabetically"]
 48         var b_Word:[String] = ["baa","babble","back","baldric","ballooning","bandbook","bandy","bankruptcy","baptistery"]
 49         var c_Word:[String] = ["cablegram","cacti","cacophonous","cairn","calcimine","calculus","caldron","candelabrum","candlestick","canker"]
 50         var d_Word:[String] = ["dagger","daguerreotype","dame","damnation","dapper","daredevil","darwin","dateless","daw","date","deacon"]
 51         var e_Word:[String] = ["eagerly","early","earn","earnestness","earthworm","eastbound","east","easel","earthwork","ease","easterly","eastern"]
 52         var f_Word:[String] = ["face","facial","facilitate","fact","faction","facilities","facing","facsimile","facet","factitious","facility","factor","factorage"]
 53         var g_Word:[String] = ["gazetteer","generalization","geneva","gibbet","glasshouse","gnarl","goad","going","grace","gradual","grammar","grandiose","grandstand","granulate"]
 54         
 55         
 56         //将数组添加到字典里面
 57         wordLibrary.updateValue(a_Word, forKey: "A")
 58         wordLibrary.updateValue(b_Word, forKey: "B")
 59         wordLibrary.updateValue(c_Word, forKey: "C")
 60         wordLibrary.updateValue(d_Word, forKey: "D")
 61         wordLibrary.updateValue(e_Word, forKey: "E")
 62         wordLibrary.updateValue(f_Word, forKey: "F")
 63         wordLibrary.updateValue(g_Word, forKey: "G")
 64 
 65         
 66         //给TableView添加表头页眉
 67         var headerView:UIView = UIView(frame: CGRectMake(0, 0, listTableView.frame.size.width, 60))
 68         var headerlabel:UILabel = UILabel(frame: headerView.bounds)
 69         headerlabel.textColor = UIColor.blackColor()
 70         headerlabel.backgroundColor = UIColor.clearColor()
 71         headerlabel.font = UIFont.systemFontOfSize(16)
 72         headerlabel.text = "TabelView 页尾表头 页眉"
 73         headerView.addSubview(headerlabel)
 74         headerView.backgroundColor = UIColor.redColor()
 75         listTableView.tableHeaderView = headerView
 76         
 77         
 78         //给TabelView添加页尾
 79         var footerView:UIView =  UIView(frame: CGRectMake(0, 0, listTableView.frame.size.width, 60))
 80         var footerlabel:UILabel = UILabel(frame: footerView.bounds)
 81         footerlabel.textColor = UIColor.blackColor()
 82         footerlabel.backgroundColor = UIColor.clearColor()
 83         footerlabel.font = UIFont.systemFontOfSize(16)
 84         footerlabel.text = "TabelView 页尾视图"
 85         footerView.addSubview(footerlabel)
 86         footerView.backgroundColor = UIColor.greenColor()
 87         listTableView.tableFooterView = footerView
 88         
 89         
 90         
 91         //刷新TableView
 92         listTableView.reloadData()
 93     }
 94 
 95     override func didReceiveMemoryWarning() {
 96         super.didReceiveMemoryWarning()
 97         // Dispose of any resources that can be recreated.
 98     }
 99     
100 
101     /*
102     // MARK: - Navigation
103 
104     // In a storyboard-based application, you will often want to do a little preparation before navigation
105     override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
106         // Get the new view controller using segue.destinationViewController.
107         // Pass the selected object to the new view controller.
108     }
109     */
110 
111     
112     //MARK: - UITableViewDelegate
113     
114     //tableView数据源:返回几节(组)
115     func numberOfSectionsInTableView(tableView: UITableView) -> Int
116     {
117         return arrayOfCharacters.count
118     }
119     
120     //tableView数据源:返回每组行数
121     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
122     {
123         var key = arrayOfCharacters[section] as String
124         var tempWord:[String]! = wordLibrary[key]
125         return tempWord.count
126     }
127     
128     //tableView 数据源:每一行高度
129     func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
130     {
131         return 50
132     }
133     
134     //tableView数据源:每一行内容
135     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
136     {
137         //Cell标示符,代表一系列
138         // OC:使用static,  swift:使用let
139         let cellIdentifier: String = "cellIdentifier"
140         
141         //通过cellIdentifier标示符取没有使用的Cell
142         //有可能不存在,所以使用:optional
143         var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as? UITableViewCell
144         
145         //如果cell取到是空
146         if cell == nil { // no value
147             
148             //创建新的cell
149             //cell样式:UITableViewCellStyle.Default
150             //cell标示符:cellIdentifier
151             cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: cellIdentifier)
152             
153             //设置字体
154 //            cell!.textLabel.font = UIFont.systemFontOfSize(14)
155             //2015年4月10号修改
156             cell!.textLabel?.font = UIFont.systemFontOfSize(14)
157             
158             //设置选中cell样式
159             cell!.selectionStyle = .Gray;
160             
161             //设置cell后面箭头样式
162             cell!.accessoryType = .DisclosureIndicator;
163         }
164         
165         var key = arrayOfCharacters[indexPath.section] as String
166         var tempWord:[String]! = wordLibrary[key]
167         
168         //从数组取对应值给cell赋值
169 //        cell!.textLabel.text = tempWord[indexPath.row]
170         //2015年4月10号修改
171         cell!.textLabel?.text = tempWord[indexPath.row]
172         
173         return cell!;
174     }
175     
176     
177     //每一组的头部,添加一个视图
178     func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
179     {
180         var view:UIView = UIView(frame: CGRectZero)
181         view.backgroundColor = UIColor(red: 0xf0/255.0, green: 0xf0/255.0 , blue: 0xf6/255.0 , alpha: 1.0)
182         
183         var label:UILabel = UILabel(frame: CGRectMake(20, 0, 100, 20))
184         label.textColor = UIColor(red: 0x8f/255.0, green: 0x8f/255.0, blue: 0x94/255.0, alpha: 1.0)
185         label.backgroundColor = UIColor.clearColor()
186         label.font = UIFont.systemFontOfSize(16)
187         view.addSubview(label)
188         
189         label.text = arrayOfCharacters[section]
190         
191         return view;
192     }
193     
194     
195     //每一组的末端,添加一个视图
196     func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView?
197     {
198         var view:UIView = UIView(frame: CGRectZero)
199         view.backgroundColor = UIColor.orangeColor()
200         
201         var label:UILabel = UILabel(frame: CGRectMake(20, 0, 300, 20))
202         label.textColor = UIColor.blackColor()
203         label.backgroundColor = UIColor.clearColor()
204         label.font = UIFont.systemFontOfSize(16)
205         view.addSubview(label)
206         
207         label.text = "第\(section) 组结束,本组页脚视图"
208         
209         return view;
210     }
211     
212     
213     
214     
215     
216     func sectionIndexTitlesForTableView(tableView: UITableView) -> [AnyObject]!
217     {
218         return arrayOfCharacters   //返回索引数据源
219     }
220     
221     //点击索引,移动TableView的组位置
222     func tableView(tableView: UITableView, sectionForSectionIndexTitle title: String, atIndex index: Int) -> Int
223     {
224         var tpIndex:NSInteger = 0
225         
226         //便利索引值
227         for character in arrayOfCharacters
228         {
229             //判断索引值 和 组名称相等,返回组坐标
230             if character == title
231             {
232                 return tpIndex
233             }
234             
235             tpIndex++
236         }
237         
238         return 0
239     }
240     
241     
242     
243     //tableView代理:点击一行
244     func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
245     {
246         //释放选中效果
247         tableView.deselectRowAtIndexPath(indexPath, animated: true)
248     }

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。