标签:
1 import UIKit 2 3 class ViewController: UIViewController,UITableViewDelegate, 4 UITableViewDataSource,UIGestureRecognizerDelegate { 5 6 var tableView:UITableView? 7 8 var ctrlnames:[String] = ["UILabel 标签","UIButton 按钮","UIDatePiker 日期选择器", 9 "UITableView 表格视图"] 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 14 //创建表视图 15 self.tableView = UITableView(frame: UIScreen.mainScreen().applicationFrame, 16 style:UITableViewStyle.Plain) 17 self.tableView!.delegate = self 18 self.tableView!.dataSource = self 19 //创建一个重用的单元格 20 self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell") 21 self.view.addSubview(self.tableView!) 22 23 //绑定对长按的响应 24 var longPress = UILongPressGestureRecognizer(target:self, 25 action:Selector("tableviewCellLongPressed:")) 26 //代理 27 longPress.delegate = self 28 longPress.minimumPressDuration = 1.0 29 //将长按手势添加到需要实现长按操作的视图里 30 self.tableView!.addGestureRecognizer(longPress) 31 } 32 33 //在本例中,只有一个分区 34 func numberOfSectionsInTableView(tableView: UITableView!) -> Int { 35 return 1; 36 } 37 38 //返回表格行数(也就是返回控件数) 39 func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 40 return self.ctrlnames.count 41 } 42 43 //创建各单元显示内容(创建参数indexPath指定的单元) 44 func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) 45 -> UITableViewCell 46 { 47 //为了提供表格显示性能,已创建完成的单元需重复使用 48 let identify:String = "SwiftCell" 49 //同一形式的单元格重复使用,在声明时已注册 50 let cell = tableView.dequeueReusableCellWithIdentifier(identify, forIndexPath: indexPath) 51 as UITableViewCell 52 cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator 53 cell.textLabel?.text = self.ctrlnames[indexPath.row] 54 return cell 55 } 56 57 //长按表格 58 func tableviewCellLongPressed(gestureRecognizer:UILongPressGestureRecognizer) 59 { 60 if (gestureRecognizer.state == UIGestureRecognizerState.Ended) 61 { 62 println("UIGestureRecognizerStateEnded"); 63 //在正常状态和编辑状态之间切换 64 if(self.tableView!.editing == false){ 65 self.tableView!.setEditing(true, animated:true) 66 } 67 else{ 68 self.tableView!.setEditing(false, animated:true) 69 } 70 } 71 } 72 73 //在编辑状态,可以拖动设置cell位置 74 func tableView(tableView: UITableView, canMoveRowAtIndexPath indexPath: NSIndexPath) -> Bool { 75 return true 76 } 77 78 //移动cell事件 79 func tableView(tableView: UITableView, moveRowAtIndexPath fromIndexPath: NSIndexPath, 80 toIndexPath: NSIndexPath) { 81 if fromIndexPath != toIndexPath{ 82 //获取移动行对应的值 83 var itemValue:String = ctrlnames[fromIndexPath.row] 84 //删除移动的值 85 ctrlnames.removeAtIndex(fromIndexPath.row) 86 //如果移动区域大于现有行数,直接在最后添加移动的值 87 if toIndexPath.row > ctrlnames.count{ 88 ctrlnames.append(itemValue) 89 }else{ 90 //没有超过最大行数,则在目标位置添加刚才删除的值 91 ctrlnames.insert(itemValue, atIndex:toIndexPath.row) 92 } 93 } 94 } 95 }
iOS开发——UI_swift篇&UItableView实现移动单元格
标签:
原文地址:http://www.cnblogs.com/iCocos/p/4674721.html