2.7 实现强大的单元格左右滑动效果并添加功能按钮 [iOS开发中的神兵利器]

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. 添加一个代理方法,用来设置单元格的高度为110。

75. 接着添加一个代理方法,设置单元格允许滑动的手势。

76. 然后添加一个代理方法,设置当单元格上有滑动手势时,所显示的功能按钮,以及功能按钮显示的视觉效果。

77. 设置功能按钮的显示方式为三维旋转的效果,共有边缘、静态、拖动、中心裁切、三维旋转等五种效果。

78. 设置功能按钮的索引为0。

79. 接着获得在当前单元格中,需要显示的邮件内容。

80. 首先处理当手势为从左向右滑动时的情况。

81. 设置在该手势下,按钮将以弹性的方式返回原来的位置。

82. 设置触发显示功能按钮的阈值大小。默认值为1.5。

83. 初始化一个颜色常量,作为功能按钮的背景颜色。

84. 返回一个功能按钮,并设置按钮的标题、背景颜色和交互动作。

85. 当该按钮被点击时,将切换当前邮件的阅读状态。

86. 同时刷新当前邮件所在单元格的外观状态。

87. 接着刷新单元格的内容视图。

88. 同时根据邮件的阅读状态的变化,刷新被添加按钮的标题文字。

89. 最后返回真,使功能按钮自动隐藏。结束按钮的点击事件。

90. 接着处理当单元格接收到从右至左的滑动手势时的情况。设置在该手势下,按钮将在触发时填充单元格。

91. 设置触发显示功能按钮的阈值大小为1.1

92. 设置按钮的内边距为15。

93. 然后初始化三个颜色常量,作为三个按钮的背景颜色。

94. 接着添加第一个功能按钮,并依次设置其标题、背景颜色、内间距以及交互动作。

95. 当该按钮被点击时,将从表格中移除按钮所在的单元格,并在数组中移除该单元格的内容。

96. 添加第二个功能按钮,并依次设置其标题、背景颜色、内间距以及交互动作。

97. 接着获得在当前单元格中,需要显示的邮件内容。

98. 然后更改邮件的标记状态。

99. 同时刷新当前邮件所在单元格的外观状态。

100. 接着刷新单元格的内容视图。

101. 添加第三个功能按钮,并依次设置其标题、背景颜色、内间距以及交互动作。

102. 获得当前单元格在表格中的位置。

103. 然后获得在当前单元格中,需要显示的邮件内容。

104. 接着创建一个动作表单,并拥有取消、删除和索引三个选项。

105. 首先处理取消选项被点击时的情况。

106. 接着处理删除选项被点击时的情况,此时删除当前的单元格,以及数组中的数据。

107. 处理索引选项被点击时的情况。

108. 当索引值为1时,更改邮件的阅读状态。

109. 然后根据更改后的阅读状态,刷新当前单元格的标识图标。

110. 同时刷新单元格的内容视图。

111. 根据邮件的阅读状态的变化,刷新被添加按钮的标题文字。

112. 然后以动画的方式,隐藏功能按钮。

113. 最后返回假,以保持功能按钮的显示状态。

114. 在方法的末尾,返回三个功能按钮。接着点击左上角的[编译并运行]按钮,启动模拟器预览项目。

115. 在左侧的圆点处按下手指,并向右侧拖动,以显示左边的功能按钮。

116. 然后点击该按钮,可以更改邮件的阅读状态。

117. 此时邮件标题左侧的蓝色小圆点消失了。接着在右侧的圆角上按下手指,并向左侧拖动,以显示右侧的三个功能按钮。

118. 点击灰色背景的按钮,将弹出一个动作表单。

119. 选择表单中的标记选项,将修改邮件的标记状态。

120. 在单元格空白位置点击,隐藏右侧的功能按钮。

121. 继续在右侧的圆角上按下手指,并向左侧拖动,以显示右侧的三个功能按钮。

122. 点击最右侧的垃圾箱按钮,将删除当前行的单元格。

123. 此时单元格被从表格中删除,最后点击此处的[停止]按钮,关闭模拟器,并结束本节课程。

本文整理自:《app开发中的神兵利器》,真正的[手把手]教学模式,用最快的速度上手iOS开发,苹果商店App Store免费下载:https://itunes.apple.com/cn/app/id1209739676,或扫描本页底部的二维码。课程配套素材下载地址:资料下载

apps8 2.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容

  • 翻译自“Collection View Programming Guide for iOS” 0 关于iOS集合视...
    lakerszhy阅读 3,859评论 1 22
  • 早上6点醒来时找不着手机,邻位正在为客人服务的按摩女说一定是服务员在我睡着时帮我收起来了。按呼叫服务,服务生过来打...
    JamesCHILL阅读 289评论 0 0
  • 最近工作比较忙, 没有来耕耘自己的简书,像我这种三天打鱼两天晒网的人我也是很是无语。最近看了两本书,来说说自...
    大娃老被删阅读 194评论 0 0
  • 那面八月中旬,我和知子去逛街。我穿着薄荷色的一字肩针织短袖和浅蓝色的高腰牛仔裙,散着长发,戴了一对银流苏耳环。 那...
    Srcoapw阅读 473评论 0 1