Swift - 给表格添加编辑功能(删除,插入)
1,下面的样例是给表格UITableView添加编辑功能:


|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
import UIKitclass ViewController: UIViewController, UITableViewDelegate,UITableViewDataSource,UIGestureRecognizerDelegate{ var tableView:UITableView? var allnames:Dictionary<Int, [String]>? var adHeaders:[String]? override func loadView() { super.loadView() } override func viewDidLoad() { super.viewDidLoad() //初始化数据,这一次数据,我们放在属性列表文件里 self.allnames = [ 0:[String]([ "UILabel 标签", "UIButton 按钮"]), 1:[String]([ "UIDatePiker 日期选择器", "UITableView 表格视图"]) ]; println(self.allnames) self.adHeaders = [ "常见 UIKit 控件", "高级 UIKit 控件" ] //创建表视图 self.tableView = UITableView(frame:self.view.frame, style:UITableViewStyle.Grouped) self.tableView!.delegate = self self.tableView!.dataSource = self //创建一个重用的单元格 self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: "SwiftCell") self.view.addSubview(self.tableView!) //创建表头标签 var headerLabel = UILabel(frame: CGRectMake(0, 0, self.view.bounds.size.width, 30)) headerLabel.backgroundColor = UIColor.blackColor() headerLabel.textColor = UIColor.whiteColor() headerLabel.numberOfLines = 0 headerLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping headerLabel.text = "UIKit 控件" headerLabel.font = UIFont.italicSystemFontOfSize(20) self.tableView!.tableHeaderView = headerLabel //绑定对长按的响应 var longPress = UILongPressGestureRecognizer(target:self, action:Selector("tableviewCellLongPressed:")) //代理 longPress.delegate = self longPress.minimumPressDuration = 1.0 //将长按手势添加到需要实现长按操作的视图里 self.tableView!.addGestureRecognizer(longPress) } func tableviewCellLongPressed(gestureRecognizer:UILongPressGestureRecognizer) { if (gestureRecognizer.state == UIGestureRecognizerState.Began) { println("UIGestureRecognizerStateBegan"); } if (gestureRecognizer.state == UIGestureRecognizerState.Changed) { println("UIGestureRecognizerStateChanged"); } if (gestureRecognizer.state == UIGestureRecognizerState.Ended) { println("UIGestureRecognizerStateEnded"); //在正常状态和编辑状态之间切换 if(self.tableView!.editing == false) { self.tableView!.setEditing(true, animated:true) } else { self.tableView!.setEditing(false, animated:true) } } } //在本例中,有2个分区 func numberOfSectionsInTableView(tableView: UITableView!) -> Int { return 2 } //返回表格行数(也就是返回控件数) func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { var data = self.allnames?[section] return data!.count } // UITableViewDataSource协议中的方法,该方法的返回值决定指定分区的头部 func tableView(tableView:UITableView, titleForHeaderInSection section:Int)->String { var headers = self.adHeaders!; return headers[section]; } // UITableViewDataSource协议中的方法,该方法的返回值决定指定分区的尾部 func tableView(tableView:UITableView, titleForFooterInSection section:Int)->String { var data = self.allnames?[section] return "有\(data!.count)个控件" } //创建各单元显示内容(创建参数indexPath指定的单元) func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { //为了提供表格显示性能,已创建完成的单元需重复使用 let identify:String = "SwiftCell" //同一形式的单元格重复使用,在声明时已注册 let cell = tableView.dequeueReusableCellWithIdentifier(identify, forIndexPath: indexPath) as UITableViewCell cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator var secno = indexPath.section var data = self.allnames?[secno] cell.textLabel?.text = data![indexPath.row] return cell } // UITableViewDelegate 方法,处理列表项的选中事件 func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { self.tableView!.deselectRowAtIndexPath(indexPath, animated: true) var itemString = self.allnames![indexPath.section]![indexPath.row] var alertview = UIAlertView(); alertview.title = "提示!" alertview.message = "你选中了【\(itemString)】"; alertview.addButtonWithTitle("确定") alertview.show(); } func tableView(tableView: UITableView!, editingStyleForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCellEditingStyle { if(indexPath.section == 1) { return UITableViewCellEditingStyle.Insert } return UITableViewCellEditingStyle.Delete } func tableView(tableView: UITableView!, titleForDeleteConfirmationButtonForRowAtIndexPath indexPath: NSIndexPath!) -> String! { var data = self.allnames?[indexPath.section]! var itemString = data![indexPath.row] as String return "确定删除\(itemString)?" } func tableView(tableView: UITableView!, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath!) { if(editingStyle == UITableViewCellEditingStyle.Delete) { self.allnames?[indexPath.section]?.removeAtIndex(indexPath.row) self.tableView!.reloadData() self.tableView!.setEditing(true, animated: true) println("你确认了删除按钮") // Array } else if(editingStyle == UITableViewCellEditingStyle.Insert) { self.allnames?[indexPath.section]?.insert("插入一项新的", atIndex: indexPath.row+1) println("你按下了插入按钮") self.tableView!.reloadData() } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }} |
Swift - 给表格添加编辑功能(删除,插入)的更多相关文章
- 为HTML表格添加交互功能------DataTables
DataTables是一个功能强大的Javascript库,用于为HTML表格添加交互功能,虽然简单性是整个项目的核心设计原则,但入门看起来相当艰巨.但是,采取这些第一步并在您的网站上运行DataTa ...
- swift - 表格的编辑功能(添加、删除)
表格(tableview)的确是一个很好用的控件,现在来实现一个编辑功能的实现,包含添加和删除,删除包括长按删除和左滑删除 效果图如下: 具体代码如下: 1.创建表格(这个表格有2个区,有区头和区尾) ...
- Swift - 给表格添加移动单元格功能(拖动行)
1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,可以看到单元格后面出现拖动按钮 (3)鼠标按住拖动按钮,可以 ...
- el-table实现表格的编辑、删除、以及新增行的方法
直接上代码: html部分: <el-form :model="inServForm" ref="inServForm" label-width=&quo ...
- Swift - 给表格添加Cell的显示动画(3D缩放)
下面的一个样例是让tableView显示数据的时候具有一个很炫的3D缩放效果. 我们只需要实现tableView的willDisplayCell方法.看方法名就知道这是在Cell将要显示的时候执行的方 ...
- Linqpad使用(调试Linq、结合linq调试业务场景、表格内编辑数据)
linqpad是一款linq语句调试工具,功能如下: 1.直接执行linq语句并查看生成的原生sql语句 2.可结合linq+C#代码进行业务场景调试 3.表格内直接新增.修改.删除数据 4.直接 ...
- C# 如何在Excel表格中插入、编辑和删除批注
概述 为文档添加必要的批注可以给文档使用者提供重要的提示信息,下面的示例中,将介绍通过C#编程语言来给Excel表格中的指定单元格内容添加批注,此外,对于已有的批注,如果需要修改,我们也可以进行编辑或 ...
- C# 实现对PPT插入、编辑、删除表格
现代学习和办公当中,经常会接触到对表格的运用,像各种单据.报表.账户等等.在PPT演示文稿中同样不可避免的应用到各种数据表格.对于在PPT中插入表格,我发现了一个新方法,不过我用到了一款免费的.NET ...
- JAVAEE——BOS物流项目09:业务受理需求分析、创建表、实现自动分单、数据表格编辑功能使用方法和工作单快速录入
1 学习计划 1.业务受理需求分析 n 业务通知单 n 工单 n 工作单 2.创建业务受理环节的数据表 n 业务通知单 n 工单 n 工作单 3.实现业务受理自动分单 n 在CRM服务端扩展方法根据手 ...
随机推荐
- 14-UIKit(拖拽手势、布局)
目录: 1.手势创建的拖拽方式 2.frame,bounds,transform,center区别 3.触控(touch) 4.布局 5.代码布局 回到顶部 1.手势创建的拖拽方式 创建手势对象,修改 ...
- Orleans is a framework
Introduction Orleans is a framework that provides a straightforward approach to building distributed ...
- 在不同编译环境中如何使用sleep()函数
今天在学习有关时间函数时,想让程序暂时挂起,一段时间后在继续执行! 用到了系统函数sleep(): 在vc下sleep函数是以毫秒为单位,如果想让其停留3秒,需要这样做 sleep(3*1000); ...
- Android组件:Fragment切换后保存状态
之前写的第一篇Fragment实例,和大多数人一开始学的一样,都是通过FragmentTransaction的replace方法来实现,replace方法相当于先移除remove()原来所有已存在的f ...
- Activity的绘制流程简单分析(基于android 4.0源码进行分析)
要明白这个流程,我们还得从第一部开始,大家都知道 在activity里面 setcontentview 调用结束以后 就可以看到程序加载好我们的布局文件了,从而让我们在手机上看到这个画面. 那么我们来 ...
- Join的实现步骤 以及连接的概念
Join的实现步骤 以及连接的概念 我们常说连接有三种,即 交叉连接.内连接.外连接,这三者的概念很容易模糊,现在我们先放下概念,搞清楚完整连接实现的步骤: 一个完整的连接有三个步骤:.做笛卡儿积: ...
- 基于visual Studio2013解决面试题之1402选择排序
题目
- 图解单片机8位PWM、16位PWM中“位”的含义!
今天 发现很多同学 搞不懂单片机的pwm中的位表示什么意思,如很多同学会问“8位pwm.16位pwm是什么意思啊,它们有什么区别啊,其中的‘位’表示什么意思啊”.对于这些问题,今天就给大家解释下,由于 ...
- PHP 的解压缩ZipArchive中的extractTo()方法 LINUX+nginx环境中解压zip时文件丢失的问题
在项目中要用ZipArchive解压ZIP文件,起初測试环境在WINDOWS平台中,測试通过,换到 LINUX+nginx 的环境中时 就出问题了(ZIP包中有文件和目录一共3百多个文件,大部分是带汉 ...
- Swift初体验 (一)
// 声明一个常量 let maxNumberOfStudents: Int = 47 // 声明一个变量,假设没有在声明的时候初始化,须要显示的标注其类型 var currentNumberOfSt ...