自定义表格单元格(Cell)操作

使用NIb文件自定义单元格(Cell)

1、          创建UITableViewCell的子类,创建的同时记得选择生成xib文件(当然你也可以将控件通过代码的方式添加上去)。

2、          打开生成的xib文件中添加控件和设置布局约束。

3、         需要将Nib文件的控件与cell类关联起来,这样才可以把数据放在控件上显示。

4、           使用的时候在tableView的cell类型设置为1创建的类。

将cell添加到TableView上。

1、          创建UITableViewController的子类。

2、          处理好数据源,放在数组中。

4、 向表格中注册cell,调用tableView的registerXXX方法。

3、          实现表格的委任代理和数据源代理。

a、          设置多少section

b、          设置每个section的行数

c、           获取、配置和显示每个单元格的数据(获得单元格的使用注意【易错点】dequeueReusableCellWithIdentifier函数的参数必须与IB中自定义的Cell的Identifier一致)

4、  将视图的Cell类型与子类关联起来(选中TabelViewController视图下的cell模块,点击属性,在类文本框中选择1创建的子类)

三种设置Cell的高度的办法。

方法1:通过设置属性rowHeight统一行高【适合所有Celll高度一致】

方法2:每行设置,实现tablevie的heightForRowAtIndexPath方法设置每个cell的高度【适合多类高度一致的Cell】。

方法3:   通过设置cell布局约束,由系统根据约束关系自动确定每个cell的高度[适合动态高度]。

self.tableView.estimatedRowHeight=控件默认值;

self.tableView.rowHeight=UITableView.automaticDimension;//重点

官网文档:传送门

如何设置cell的frame、bound和透明度?

通过继承cell,在cell的子类中重构setFrame方法可以调整cell的frame、bound和透明度(默认是无法直接更改的)

五、自定义单元格使用实例:

1.新建工程,新建文件,选择cocoaTouchClass,在第二个输入框(根类)输入tableViewCell,再在第一个输入框输入自己对自定义cell的命名(注意首字母大写)

勾选下面的同时产生xib文件复选框,如下图:

2打开刚刚产生的文件的后缀名为.xib的文件,在自定义的cel中添加需要的控件和约束,之后一定要在右边的属性identifier添加名字否则会失败,如下图的3

3.打开辅助编辑模式,将xib文件中的控件都映射到.swift文件中(control+拖拽)。如下图

4.在需要使用的表格视图的控制器中写入如下代码

import UIKitclass ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {//添加表格协议@IBOutlet weak var tableView: UITableView!//映射自己的UITableViewvar data = ["用户1","用户2","用户3"]//数据源准备override func viewDidLoad() {super.viewDidLoad()//1.设置表格协议代理tableView.delegate = selftableView.dataSource = selftableView.rowHeight = UITableView.automaticDimension//2.【重点】在表格中注册nib文件self.tableView.registerNib(UINib(nibName: "TableViewCell",bundle: nil), forCellReuseIdentifier: "testCell")}override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()}//设置表格的模块func numberOfSectionsInTableView(tableView: UITableView) -> Int {return 1}//每个模块的行数func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {return data.count}//对每行都实行数据填入func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {//【重点】定义一个重复使用的cell(一般使用常量)注意后面函数的参数名与xib文件中的identfier一致  ,还需要转化为相应的自定义cell类型。let cell:TableViewCell = self.tableView.dequeueReusableCellWithIdentifier("testCell") as! TableViewCellcell.name.text = data[indexPath.row]cell.num.text = "\(indexPath.row+1)"return cell}}

5.效果截图如下

有可能发生的错误:

1.invalid nib registered for identifier (cell2) - nib must contain exactly one top level object which must be a UITableViewCell instance

这个错误是注册不合法,有可能的原因是:你相应的xib文件中有多了一个控件实例。。

解决:把多的那个删除就好了。

【UIKit】表格自定义单元格(UITableViewCll)相关推荐

  1. Element Plus 虚拟化表格组件的使用(排序、筛选、自定义单元格渲染) - 个人使用总结

    前言 element-plus@2.2.0 后提供虚拟化表格组件,解决表格数据过大导致的卡顿等性能问题.相对于表格组件,用法上区别还是挺大的,尤其是一些附加的功能,例如排序.筛选.自定义单元格/表头渲 ...

  2. Swift - 自定义单元格实现微信聊天界面

    1,下面是一个放微信聊天界面的消息展示列表,实现的功能有: (1)消息可以是文本消息也可以是图片消息 (2)消息背景为气泡状图片,同时消息气泡可根据内容自适应大小 (3)每条消息旁边有头像,在左边表示 ...

  3. iOS开发那些事--自定义单元格实现

    自定义单元格 当苹果公司提供给的单元格样式不能我们的业务需求的时候,我们需要自定义单元格.在iOS 5之前,自定义单元格可以有两种实现方式:代码实现和用xib技术实现.用xib技术实现相对比较简单,创 ...

  4. antd table设置表格一个单元格的字体颜色_开源 UI 库中,唯一同时实现了大表格虚拟化和树表格的 Table 组件

    背景 有这样一个需求,一位 React Suite (以下简称 rsuite)的用户,他需要一个 Table 组件能够像 Jira Portfolio 一样,支持树形数据,同时需要支持大数据渲染. 截 ...

  5. 使用VUE组件创建SpreadJS自定义单元格(二)

    在上篇中,我们介绍了如何通过设置runtimeCompiler为true,在Vue中实现了动态创建电子表格组件.想了解具体内容可看点击查看使用VUE组件创建SpreadJS自定义单元格(一). 但是在 ...

  6. POI自定义单元格类

    POI自定义单元格类 在用POI做Excel导出的时候,单元格的创建是一个很头疼的问题,对于有些表格中杂乱无章的单元格顺序,比如: 这种树形结构并不像横向的表格有规律,所以就需要一行一行的插入.这是一 ...

  7. flutter自定义单元格_使用自定义大小的单元格制作复杂的UICollectionView布局(第1部分)

    flutter自定义单元格 Recently I built a screen with a pretty complex layout containing self sizing cells. I ...

  8. Word插入表格相邻单元格边框断开方法

    Word插入表格相邻单元格边框断开方法 写论文要将相邻单元格边框打断,见了很多教程,这里详细讲解一些如何实现,重点要掌握应用于单元格和段落的边框是不同的,应用于段落的边框之间是分开的. 实现效果: 操 ...

  9. java表格里面显示图片_jquery表格datagrid单元格显示图片及分页使用

    要想达到自定义显示表格框的目的比如显示图片,超链接,按钮的形式,只需要给列添加formatter属性即可,比如显示图片: columns: [[ { field: 'IName', title: '显 ...

最新文章

  1. Android之SurfaceView(二)
  2. 《Groovy极简教程》第12章 Groovy的JSON包
  3. mongodb Install the MongoDB service
  4. SuperSocket+unity 网络笔记
  5. 数据结构——二叉树的层次遍历进阶
  6. 我两个月来对Quarkus的了解
  7. 【渝粤题库】广东开放大学 建设监理 形成性考核
  8. python计算股票趋势_通过机器学习的线性回归算法预测股票走势(用Python实现)...
  9. Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案
  10. java pdf增删改查_如何利用Java代码操作索引库?
  11. [编辑修订01]git 常用命令和Gerrit的联合使用常用命令
  12. 特征码的使用办法_小脚的美丽与哀愁,34/35码的她们都是怎么买鞋的?
  13. 《菜菜的机器学习sklearn课堂》降维算法PCA和SVD
  14. 慵懒中长大的人,只会挨生活留下的耳光
  15. Xshell 外观配置
  16. eclipse安装及配置android基础教程
  17. 海康球机3D定位功能编码实现VC(对前一篇补充改进)
  18. 阿里开源自研语音识别模型DFSMN
  19. outlook2013升级_Microsoft Outlook 2013入门指南
  20. x5开源库后续知识点

热门文章

  1. protobuf + maven 爬坑记
  2. 设置centos6.5虚拟机时间同步
  3. 微信小程序---系统信息-位置信息-定位信息
  4. 重构路上遇到的一些兼容性问题
  5. 你不可不知的家庭装修禁忌
  6. iOS UIlabel内容之后添加全文/展开
  7. Android OkHttp(1)
  8. 调用加了SSL签名的WebService
  9. MAVEN项目环境搭建
  10. jquery Ajax 通过jsonp的方式跨域提交表单