1. 本节课将为您演示,如何在表格中嵌入另一个表格,从而创建更加强大的布局效果。首先在项目文件夹上点击鼠标右键,弹出右键菜单。
2. 在弹出的右键菜单中,选择创建新文件选项。我们将创建一个自定义的单元格,在此单元格中添加另一个表格,作为单元格的子元素。
3. 在弹出的文件模板选择窗口中,保持默认的选项,然后点击下一步按钮,进入下一步设置页面。
6. 保持默认的文件存储位置 ,点击创建按钮,完成文件的创建。
9. 接着添加两个属性,一个是表格对象,另一个作为表格的数据来源。
10. 然后重写单元格的初始化方法,在该方法中对单元格进行自定义操作。
13. 设置表格对象的数据源和代理,为当前的视图控制器对象。
14. 接着设置不允许内部表格的滚动,只允许单元格所属表格可以进行滚动。
16. 添加一个代理方法,用来设置表格的行数,在此设置表格的行数,与数组的长度保持一致。
18. 创建一个字符串常量,作为单元格的复用标识,然后根据复用标识,从表格中获取可以复用的单元格。
19. 如果没有可以复用的单元格,则初始化一个默认样式的单元格,并设置单元格的复用标识。
20. 从数组中获得指定序号的字符串,作为单元格的标题文字。
24. 接着创建一个类方法,用来根据字符串的长度,计算单元格的高度。
27. 通过将显示区域的高度,减去文字至基线的距离,获得文字的高度。将显示区域的宽度,除以每行文字的宽度200,获得文字的行数。两者相乘得到总的高度。
29. 首先根据单元格的序号,获得该单元格将要显示的字符串。
30. 接着根据刚刚创建的类方法,计算单元格容纳该字符串所需的高度。
31. 然后进行临界判断,从而将高度数值保持在一个合理的范围之内。
32. 添加一个方法,用来设置表格的数据源。该方法将在外部的表格中被调用。
33. 设置自定义单元格的数组属性,作为该单元格的表格的数据源。
34. 接着计算单元格内部的表格的高度,首先初始化一个浮点常量。
35. 然后创建一个循环,遍历表格的数据源。通过对每个单元格的高度进行累计,合计整个表格的高度。
37. 继续添加一个方法,用来获得单元格内部表格的高度数值。
38. 最后添加一个必须实现的初始化方法。然后在左侧的项目导航区,打开视图控制器的代码文件。
39. 现在开始创建处于外部的表格视图,并在表格中使用刚刚自定义的包含表格的单元格。
40. 首先使当前的视图控制器类,遵循表格视图的数据源协议和代理协议。
46. 设置表格对象的数据源和代理,为当前的视图控制器对象。
49. 添加一个代理方法,用来设置表格的行数,在此设置表格的行数为新闻标题数组长度的两倍。偶数行用来显示标题,奇数行用来显示评论。
51. 创建两个字符串常量,作为单元格的复用标识。第一个用于显示新闻标题的偶数行单元格,另一个用于显示新闻评论的奇数行的自定义单元格。
52. 接着创建两个单元格对象,一个是系统默认样式的单元格,另一个是包含子表格的自定义单元格。
54. 根据偶数行的复用标识,从表格中获取可以复用的单元格。
55. 如果没有可以复用的单元格,则初始化一个默认样式的单元格,并设置单元格的复用标识。
61. 接着处理奇数行的单元格,首先根据奇数行的复用标识,从表格中获取可以复用的单元格。
62. 如果没有可以复用的单元格,则初始化一个包含子表格的自定义单元格,并设置单元格的复用标识。
64. 然后调用自定义单元格对象的,设置子表格的数据源的方法,在设置子表格数据源的同时,也使子表格的高度做到自适应。
71. 此处使用相同的方式,通过累加的方式计算子表格的高度。
72. 最后返回该高度的数值与20的和,避免单元格中的文字过于拥挤。接着点击左上角的[编译并运行]按钮,启动模拟器预览项目。
73. 在弹出的模拟器中,观察表中表的排版效果。最后点击此处的[停止]按钮,关闭模拟器,并结束本节课程。
本文整理自:《app开发中的神兵利器》,真正的[手把手]教学模式,用最快的速度上手iOS开发,苹果商店App Store免费下载:https://itunes.apple.com/cn/app/id1209739676,或扫描本页底部的二维码。课程配套素材下载地址:资料下载
apps8 2.png
网友评论