自定义单元格
当苹果公司提供给的单元格样式不能我们的业务需求的时候,我们需要自定义单元格。在iOS 5之前,自定义单元格可以有两种实现方式:代码实现和用xib技术实现。用xib技术实现相对比较简单,创建一个xib文件,然后定义一个继承 UITableViewCell类单元格类即可。在iOS 5之后我们又有了新的选择,故事板实现方式,这种方式比xib方式更简单一些。
我们把简单表视图案例的原型图修改一下,这种情况下四种内置的单元格样式就不合适了。
采用“Single View Application”工程模版创建一个名为“CustomCell”的工程,Table View属性的“Prototype Cells”项目设为1(除此之外其它的操作过程与上同)。
设计画面中上部会有一个单元格设计画面,我们可以在这个位置进行单元格布局的设计。从对象库拖拽一个Label和Image View到单元格设计画面,调整好它们的位置。
创建自定义单元格类CustomCell, 选择UITableViewCell为父类
再 回到IB设计画面,在IB中左边选择“Table View Controller Scene” → “Table View Controller” → “Table View” → “Table View Cell”,打开单元格的标识检查器,在Class的选项中选择CustomCell类。
为Lable和ImageView控件连接输出口
本案例的代码如下:
// // CustomCell.h // CustomCell #import <UIKit/UIKit.h> @interface CustomCell : UITableViewCell @property (weak, nonatomic) IBOutlet UILabel *name; @property (weak, nonatomic) IBOutlet UIImageView *image; @end // // CustomCell.m // CustomCell #import “CustomCell.h” @implementation CustomCell @end
CustomCell类的代码比较简单,在有些业务中还需要定义动作。
修改视图控制器ViewController.m中的tableView: cellForRowAtIndexPath:方法,代码如下:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @”Cell”; CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } NSUInteger row = [indexPath row]; NSDictionary *rowDict = [self.listTeams objectAtIndex:row]; cell.name.text = [rowDict objectForKey:@"name"]; cell.image.image = [UIImage imageNamed:[rowDict objectForKey:@"image"]]; NSUInteger row = [indexPath row]; NSDictionary *rowDict = [self.listFilterTeams objectAtIndex:row]; cell.textLabel.text = [rowDict objectForKey:@"name"]; NSString *imagePath = [rowDict objectForKey:@"image"]; imagePath = [imagePath stringByAppendingString:@".png"]; cell.image.image = [UIImage imageNamed:imagePath]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; return cell; }
我们看到if (cell == nil){}代码被移除,这是因为我们在IB中已经将重用标识设定为Cell了。 方法中的其它代码与简单表一致,此处不再赘述。运行一下。
相关推荐
《iOS应用开发攻略》收录了最新的iOS软件开发的最佳做法,涵盖了应用开发及构建优雅解决方案的必备知识,包括:编写通用的启动画面和嵌入式Web浏览器;构建复杂表视图;使app或游戏活灵活现的填充、变换和动画;通过...
NMOutlineView在内部实现为UITableView对象,它的项目(单元格)是UITableViewCell类的子类,因此可以使用UITableViewCell API轻松自定义其外观。 NMOutlineView公开数据源协议。 协议方法类似于
特征: 用 Swift 编写通过 Marvel API ( ) 访问的数据图片缓存核心数据UIPageViewController UITableView 和 UICollectionView 的自定义单元格带有拉伸图像的 UIScrollView WKWebView 显示 Marvel.com 的链接...
如何在iOS中实现可折叠表部分一个简单的iOS swift项目...在此项目中,表格视图会自动调整行的高度以适合每个单元格中的内容,并且自定义单元格也以编程方式实现。 如何实现可折叠表部分? 步骤1.准备数据假设我们有f
表视图是iOS开发中最重要的视图,它以列表的形式展示数据。表视图又一下部分组成: 表头视图:表视图最上边的视图 表脚视图:表视图最下边的视图 单元格(cell):表视图中每一行的视图 节(section):由多个单元格...
使用Swift 5编写的最易于使用的iOS可扩展和可折叠单元格。您可以自定义可扩展UITableVie ExpandableCell Intoduction完全重构的YNExapnadableCell,更加简洁,无错误。 使用Swift 5编写的最简单的iOS可扩展和可折叠...
单元格的数量不受限制。 您只需两行代码即可轻松使用项目,并且可以轻松自定义。 您可以下载示例ap SPLarkController关于控制器到顶部的过渡。 您可以在演示控制器后更改可设置动画的高度。 有关如前所述的工具设置...
在项目开发中,我们经常会遇到这么一种情况:App中某些原生控件满足不了我们的需求,所以这时候我们需要自定义来让控件具有自己公司产品的风格.在大公司中,有很多原生控件都是被封装过的,这样大家在用的时候直接用就好...
适用于iOS应用程序的完整可配置...功能固定的列标题和行标题合并单元格自动循环无限滚动自定义每个单元格的网格和边框自定义垂直和水平方向的单元格间距快速滚动,内存高效的UICollectionView(如API)经过良好单元测试
将选定的日期限制在定义的时间范围内显示或隐藏日期单元格中的月份无限滚动时间自定义颜色和日期格式(v1.3)基于约束的UI(v2.0)现在,您可以将选择器视图创建为单独的视图! (v2.1.0)现在支持迦太基(有点晚了-...
通过提供初始行和列数以显示空表或将其与预定义的行和列数据集一起使用,该库使您可以轻松创建可编辑的表和电子表格。...:red_heart:功能保存已编辑的行保存已编辑的单元格自定义单元格数据添加空行创建空表Customiza
它为任何视图提供了一行动画,其中包括包含其他视图的那些视图,例如带有单元格的UITableView和UICollectionView或带有rangedSubviews的UIStackView。 整个视图UITableView UICollectionView SVG动画的灵感来自于...
轻松控制视图的可重用性提供多种内置布局自定义布局样式(通过JSON数据或代码) 高性能(基于 ) 可扩展的API演示基本概念Card是一组单元格,负责布局子单元格。 单元格,最小的业务UI元素,类似于RecyclerView中的...
动态表演示 背景 动态表演示是一个示例应用程序,是作为... 开发人员可以访问底层UI对象,以执行iOS SDK允许的最大程度的自定义。 提供了示例图像,您可以自由使用它们。 历史 版本1.0:初始版本 版本1.2:为行选择
轻松开发具有不同页眉,页脚和多种单元格类型的自定义部分 支持有状态的部分 加强可重用性和可测试性 最后但并非最不重要的一点是,忘记UITableView的委托 快速开始 使用UITableViewCell和CellDrawer创建一个...