Swift - 给表格添加编辑功能(删除,插入)

1,下面的样例是给表格UITableView添加编辑功能:

(1)给表格添加长按功能,长按后表格进入编辑状态

(2)在编辑状态下,第一个分组处于删除状态,第二个分组处于插入状态

(3)点击删除图标,删除对应条目

(4)点击添加图标,插入一条新数据

2,效果图

    

    

3,代码如下


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 UIKit

class 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.

    }

}

时间: 2024-11-10 00:09:25

Swift - 给表格添加编辑功能(删除,插入)的相关文章

swift - 表格的编辑功能(添加、删除)

表格(tableview)的确是一个很好用的控件,现在来实现一个编辑功能的实现,包含添加和删除,删除包括长按删除和左滑删除 效果图如下: 具体代码如下: 1.创建表格(这个表格有2个区,有区头和区尾),以及长按手势的方法绑定 class TenthViewController: UIViewController,UITableViewDelegate,UITableViewDataSource,UIGestureRecognizerDelegate { var tableView:UITable

Swift - 给表格添加移动单元格功能(拖动行)

1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,可以看到单元格后面出现拖动按钮 (3)鼠标按住拖动按钮,可以拖动单元格到任意位置 (4)拖动完毕后,还会触发TabelView对应的代理事件 2,效果图如下:   3,代码如下 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

Swift - 给表格添加Cell的显示动画(3D缩放)

下面的一个样例是让tableView显示数据的时候具有一个很炫的3D缩放效果. 我们只需要实现tableView的willDisplayCell方法.看方法名就知道这是在Cell将要显示的时候执行的方法. 1 2 3 4 5 6 7 8 9 10 11 //设置cell的显示动画 func tableView(tableView: UITableView!, willDisplayCell cell: UITableViewCell!,     forRowAtIndexPath indexPa

Linqpad使用(调试Linq、结合linq调试业务场景、表格内编辑数据)

linqpad是一款linq语句调试工具,功能如下: 1.直接执行linq语句并查看生成的原生sql语句 2.可结合linq+C#代码进行业务场景调试 3.表格内直接新增.修改.删除数据 4.直接执行SQL语句 官方下载网站:http://www.linqpad.net/ 版本分别: Free:免费版,提供最基本的功能 Premium:高级版,需要购买,提供智能提示功能(非常重要,可自行搜索下载) 以Sqlserver的Northwind数据库为例,讲解一下使用方法: 一.执行简单的linq语句

添加、编辑、删除功能测试点

添加功能 1.特殊键:(1)是否支持Tab键 (2)是否支持回车键 2.提示信息:(1)不符合要求的地方是否有错误提示 3.唯一性:(1)字段唯一的,是否可以重复添加,添加后是否能修改为已存在的字段 (字段包括区分大小写以及在输入的内容前后输入空格,保存后,数据是否真的插入到数据库中,注意保存后数据的正确性) 4.数据正确性: (1)对编辑页的每个编辑项进行修改,点击保存,是否可以保存成功,检查想关联的数据是否得到更新. (2)进行必填项检查(即是否给出提示以及提示后是否依然把数据存到数据库中:

C# 实现对PPT插入、编辑、删除表格

在现代学习和办公当中,经常会接触到对表格的运用,像各种单据.报表.账户等等.在PPT演示文稿中同样不可避免的应用到各种数据表格.对于在PPT中插入表格,我发现了一个新方法,不过我用到了一款免费的.NET组件--Free Spire.Presentation,在C#中添加该产品DLL文件,可以简单快速地实现对演示文稿的表格插入.编辑和删除等操作.有需要的话可以在下面的网址下载:https://www.e-iceblue.cn/Downloads/Free-Spire-Presentation-NE

C# 如何在Excel表格中插入、编辑和删除批注

概述 为文档添加必要的批注可以给文档使用者提供重要的提示信息,下面的示例中,将介绍通过C#编程语言来给Excel表格中的指定单元格内容添加批注,此外,对于已有的批注,如果需要修改,我们也可以进行编辑或者删除批注.示例内容将包含以下主要内容:1.插入批注1.1 插入文本1.2 插入图片2.编辑批注2.1 修改批注内容2.1 设置批注可见性3.删除批注 工具 Spire.XLS for .NET 8.0 提示:在进行代码操作之前,需下载安装Spire.Xls,并添加引用dll文件,添加如下using

iOS - UITableView 编辑(cell的插入, 删除, 移动)

UITableView Cell的插入/删除 核心API Class : UITableView Delegate : UITableViewDataSource, UITableViewDelegate 涉及的API:(API的官方详细注释详见本章结尾) /** TableView 进入或退出编辑状态(TableView 方法). */ - (void)setEditing:(BOOL)editing animated:(BOOL)animate /** 确定哪些行的cell可以编辑 (UIT

Node.js 博客实例(五)编辑与删除功能

原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第五章,由于版本等的原因,在原教程基础上稍加改动即可实现. 现在给博客添加编辑文章与删除文章的功能. 当一个用户在线时,只允许他在自己发表的文章页进行编辑或删除,编辑时,只能编辑文章内容,不能编辑文章标题. 在style.css ,添加如下样式: .edit{margin:3px;padding:2px 5px;border-radius:3px;background-color:#f3f3f3;c