码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——UI_swift篇&UITableView实现单元格展开与隐藏

时间:2015-07-24 22:34:18      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

UITableView实现单元格展开与隐藏

下面是一个列表单元格cell的折叠展开效果的demo。
当点击单元格时会展开该单元格,便于显示一些详情什么的。点击其他单元格原来的会关闭,同时有动画效果。
 
效果如如下:
技术分享 技术分享
代码如下:
 1 import UIKit
 2  
 3 class ViewController: UIViewController,UITableViewDelegate,
 4 UITableViewDataSource {
 5      
 6     var tableView:UITableView?
 7      
 8     var ctrlnames:[String] = ["UILabel 标签","UIButton 按钮","UIDatePiker 日期选择器",
 9         "UITableView 表格视图"]
10      
11     var selectedCellIndexPath:NSIndexPath!
12      
13     override func viewDidLoad() {
14         super.viewDidLoad()
15          
16         //创建表视图
17         self.tableView = UITableView(frame: UIScreen.mainScreen().applicationFrame,
18             style:UITableViewStyle.Plain)
19         self.tableView!.delegate = self
20         self.tableView!.dataSource = self
21         //创建一个重用的单元格
22         self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell")
23         self.view.addSubview(self.tableView!)
24     }
25      
26     //在本例中,只有一个分区
27     func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
28         return 1;
29     }
30      
31     //返回表格行数(也就是返回控件数)
32     func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
33         return self.ctrlnames.count
34     }
35      
36     //创建各单元显示内容(创建参数indexPath指定的单元)
37     func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
38         -> UITableViewCell
39     {
40         var label =  UILabel(frame:CGRectZero)
41         label.setTranslatesAutoresizingMaskIntoConstraints(false)
42         label.text = self.ctrlnames[indexPath.row]
43          
44         var textview=UITextView(frame:CGRectZero)
45         textview.setTranslatesAutoresizingMaskIntoConstraints(false)
46         textview.textColor = UIColor.grayColor()
47         //演示效果,暂时写死
48         textview.text = "UIDatePicker 是一个控制器类,封装了 UIPickerView,但是他是UIControl的子类,"
49          
50         let identify:String = "SwiftCell"
51         var cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier:identify)
52         //自动遮罩不可见区域,超出的不显示
53         cell.layer.masksToBounds = true
54         cell.contentView.addSubview(label)
55         cell.contentView.addSubview(textview)
56          
57         //创建一个控件数组
58         var views:NSMutableDictionary = NSMutableDictionary()
59         views.setValue(label, forKey: "label")
60         views.setValue(textview, forKey: "textview")
61         cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
62             "H:|-15-[label]-15-|", options: nil, metrics: nil, views: views))
63         cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
64             "H:|-15-[textview]-15-|", options: nil, metrics: nil, views: views))
65         cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
66             "V:|[label(40)]", options: nil, metrics: nil, views: views))
67         cell.contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
68             "V:|-40-[textview(80)]", options: nil, metrics: nil, views: views))
69         return cell
70     }
71      
72     // UITableViewDelegate 方法,处理列表项的选中事件
73     func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!)
74     {
75         self.tableView!.deselectRowAtIndexPath(indexPath, animated: false)
76         selectedCellIndexPath = indexPath
77         // Forces the table view to call heightForRowAtIndexPath
78         tableView!.reloadRowsAtIndexPaths([indexPath],
79             withRowAnimation: UITableViewRowAnimation.Automatic)        
80     }
81     
82     //点击单元格会引起cell高度的变化,所以要重新设置
83     func tableView(tableView: UITableView,
84         heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
85             if(selectedCellIndexPath != nil && selectedCellIndexPath == indexPath){
86                 return 120
87             }
88             return 40
89     }
90 }

 

 

iOS开发——UI_swift篇&UITableView实现单元格展开与隐藏

标签:

原文地址:http://www.cnblogs.com/iCocos/p/4674728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!