5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]
1. 在欢迎窗口右侧的历史项目列表中,双击打开之前创建的单视图项目模板。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM2NS8yOTIwNWYyYTBhZDc3ODBjNjM0MmU5MjVkODdiYTFkNS5wbmc=)
2. 本节课将为您演示,如何调整单元格在表格中的位置。首先在一个空白项目中,打开视图控制器的代码文件。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQwOS82N2JiZjJjMDljOWIyN2I1NjYwOWJjZGFmOTUwODc0OS5wbmc=)
3. 接着开始编写代码,实现这项功能。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzcwOS8zNDlhMGM1NjgyMGZkNDEwZmE4YjYxOThiM2VkN2FiNS5wbmc=)
4. 首先添加两个代理协议。一个是表格视图的数据源协议,另一个是表格视图的代理协议。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg5LzNlZTIxMWZlMDA2YzZlMDFmOTIzZmQ4NGY2MzBjNWExLnBuZw==)
5. 然后创建一个数组,作为表格的数据来源。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk3NS83NWI1NjgwMTk3MmU5ZjI5MTI3Mjk4MzI2NThhZTBkZi5wbmc=)
6. 创建一个位置在(0, 40),尺寸为(320, 420)的显示区域。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk4My9mMjZlOWNmODcxMmE5MDJlYWMyNjQ3OTZjMjUxMzM4Ny5wbmc=)
7. 初始化一个表格视图,并设置其位置和尺寸信息。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE0My83YzBiYjk1YzQzZjFjNzQ4YzU3MmNjN2RkNzI2MGQ5Ny5wbmc=)
8. 设置表格视图的代理,为当前的视图控制器类。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzY5MS9iNGZmZWQ4NWY5MzgzZWY3YWM0OWM2MDRhZTQ3OTZjMy5wbmc=)
9. 设置表格视图的数据源,为当前的视图控制器类。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzEwMi9lMDMwOTE2YzQxNjI5MjkwMTFkNmZkYTA1MTRlNGY4ZS5wbmc=)
10. 在默认状态下,开启表格的编辑模式。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYyNS8zOTkyZTQwNGU2Nzk0OTM0OWZkZDZlMGFhN2Y3NjY0OS5wbmc=)
11. 然后将表格视图,添加到当前视图控制器的根视图中。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzkwMS9lYzg2NzljY2JhMmEyZTljNTkwNzIzNDg0ZGQ5NDdkNS5wbmc=)
12. 添加一个代理方法,用来设置表格视图的行数。在此使用数组的长度,作为表格视图的行数。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzI3Mi9jZWY4YTg4ZDdhZDliZDFiZDllNDRlMzc2OGJlYmE4OC5wbmc=)
13. 添加一个代理方法,用来初始化或复用表格视图中的单元格。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzkzOC84NDBkNjcyYmJhY2I3OTY2ZjRmNmI4MDNjZTQxNDRjMi5wbmc=)
14. 创建一个字符串,作为单元格的复用标识符。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg0NS8zNTE5ZmIwNDgzYzQ5Zjc1NzA4MGUzNTAzYTdmNTExNS5wbmc=)
15. 单元格的标识符,可以看作是一种复用机制。此方法可以从,所有已经开辟内存的单元格里面,选择一个具有同样标识符的、空闲的单元格。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzY3Ni8zNzA0MTZiNTUyYTBkYTY4NjY2NjhlMTNlNjRjMDhlYy5wbmc=)
16. 如果在可重用单元格队列中,没有可以重复使用的单元格,则创建新的单元格。新的单元格具有系统默认的单元格样式,并拥有一个复用标识符。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYwLzA4YmZlNTM2NzhkNTM4ZjM0N2FlMmI1NmMzZjQzNzFjLnBuZw==)
17. 获取当前单元格,在段落中的行数。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQwOS82ZGVjMmQ3ZjIxZjRkMzJjYmEzOTFmMWNlNWVkYmQ3MS5wbmc=)
18. 根据当前单元格的行数,从数组中获取对应位置的元素,作为当前单元格的标题文字。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzc2OS84MWQ3MjYxMDYwMTNlYmQ3ZjRjMzU3ZDU3NzBiMDY3OS5wbmc=)
19. 返回设置好的单元格对象。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzMwOS8yYWRhOTc3Mzg4NzBlOWRmMGRiMDM3ZjQ1MmY0NTZlNS5wbmc=)
20. 添加一个代理方法,用来设置单元格的编辑模式。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIyOS9mNWYxOGEyOTdhNDE5ZWY2Njg1YTk5ZGQ0NTI4NmViNS5wbmc=)
21. 添加一个代理方法,用来设置单元格是否允许拖动换行。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzMwNy8xYWU1NjMwM2FjNjNjNzJlN2NiMDc2YjQ3MDZlMTRkYi5wbmc=)
22. 再次添加一个代理方法,用来响应单元格的移动事件。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE4My8xMzFjNWM4Y2JkODA5NmE1YTRlN2M0MGUzY2QwYTBjNy5wbmc=)
23. 首先获得单元格移动前的位置。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM5Mi82Yjk3OWFlNmUwYzdmMTQ3OWYzYmVhZTExMGM5OGVlMC5wbmc=)
24. 然后获得单元格移动后的位置。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzU5NS9kNGJhY2ZmZGI2NThhMWI0MzUyMTdhNzllNzliMmFkYi5wbmc=)
25. 获得数组在单元格移动前的对象。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQwOS81ZTI5OWE1NjdmMTlkNDAyOTgyYWM3NTQ3YjEyYTk1MS5wbmc=)
26. 删除数组中单元格移动前位置的对象。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIxNC9mZjk4YjcxMGZkODhkOGI2ZTEyOTRkNDJjYzY0NDAzNi5wbmc=)
27. 然后在数组中的目标位置,重新插入一份删除的对象,以同步数据源,并保证数据与界面的一致性。接着点击[编译并运行]按钮,启动模拟器预览项目。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzMzMy9hZjIyNTM0OGE0ODVhZTBmZTI3N2FiMTU4MDI2YTkxNS5wbmc=)
28. 在弹出的模拟器中,鼠标从上往下拖动任一单元格,观察拖动效果。
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzk0Ni85YTIyZDRkZmI5Y2UyNDNhZGVhYzg2YzY4Zjk1MjgzMi5wbmc=)
![5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程] 5.11 调整UITableView单元格的顺序 [原创iOS开发-Xcode教程]](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM0L2VmNjM3ZTcyYzYzNWIwZWYxMmI1MzBmMzRiMjQ2MjQyLnBuZw==)
本文整理自:《互动教程 for Xcode9 & Swift4》,真正的[手把手]教学模式,用最快的速度上手iOS开发,苹果商店App Store免费下载:https://itunes.apple.com/cn/app/id1063100471,或扫描本页底部的二维码。课程配套素材下载地址:资料下载
2. 本节课将为您演示,如何调整单元格在表格中的位置。首先在一个空白项目中,打开视图控制器的代码文件。
3. 接着开始编写代码,实现这项功能。
4. 首先添加两个代理协议。一个是表格视图的数据源协议,另一个是表格视图的代理协议。
5. 然后创建一个数组,作为表格的数据来源。
6. 创建一个位置在(0, 40),尺寸为(320, 420)的显示区域。
7. 初始化一个表格视图,并设置其位置和尺寸信息。
8. 设置表格视图的代理,为当前的视图控制器类。
9. 设置表格视图的数据源,为当前的视图控制器类。
10. 在默认状态下,开启表格的编辑模式。
11. 然后将表格视图,添加到当前视图控制器的根视图中。
12. 添加一个代理方法,用来设置表格视图的行数。在此使用数组的长度,作为表格视图的行数。
13. 添加一个代理方法,用来初始化或复用表格视图中的单元格。
14. 创建一个字符串,作为单元格的复用标识符。
15. 单元格的标识符,可以看作是一种复用机制。此方法可以从,所有已经开辟内存的单元格里面,选择一个具有同样标识符的、空闲的单元格。
16. 如果在可重用单元格队列中,没有可以重复使用的单元格,则创建新的单元格。新的单元格具有系统默认的单元格样式,并拥有一个复用标识符。
17. 获取当前单元格,在段落中的行数。
18. 根据当前单元格的行数,从数组中获取对应位置的元素,作为当前单元格的标题文字。
19. 返回设置好的单元格对象。
20. 添加一个代理方法,用来设置单元格的编辑模式。
21. 添加一个代理方法,用来设置单元格是否允许拖动换行。
22. 再次添加一个代理方法,用来响应单元格的移动事件。
23. 首先获得单元格移动前的位置。
24. 然后获得单元格移动后的位置。
25. 获得数组在单元格移动前的对象。
26. 删除数组中单元格移动前位置的对象。
27. 然后在数组中的目标位置,重新插入一份删除的对象,以同步数据源,并保证数据与界面的一致性。接着点击[编译并运行]按钮,启动模拟器预览项目。
28. 在弹出的模拟器中,鼠标从上往下拖动任一单元格,观察拖动效果。
本文整理自:《互动教程 for Xcode9 & Swift4》,真正的[手把手]教学模式,用最快的速度上手iOS开发,苹果商店App Store免费下载:https://itunes.apple.com/cn/app/id1063100471,或扫描本页底部的二维码。课程配套素材下载地址:资料下载