详细例子构建自定义cell

在实际做项目中,使用系统自带的tableView时,cell的样式单一,不易改变。而使用xib时,能改变cell的样式,但是项目不具有可改性,xib 一旦创立,内容不会改变,这里,利用封装的思想,用纯代码建立自定义cell,数据使用plist文件存储

1、首先建立一个数据模型(moreBang),在头文件中(moreBang.h)定义模型中的属性,并将字典转为模型数据:

在moreBang.m中实现方法:(在对象方法中还可以使用KVC转化)

2、其次,在建立cell的frame模型,设置各个空间的位置,建立moreBangFrame.h,并将数据模型传入

在moreBangFrame.m文件中设置frame:

3、创建moreBangCell,继承UITableViewCell,moreBangCell.h的设置如下

#import <UIKit/UIKit.h>

@class moreBang,moreBangFrame;

@interface moreBangCell : UITableViewCell

@property(nonatomic,strong) moreBangFrame * morebangframe;

// 重写cell方法

+(instancetype)cellWithTableView:(UITableView *)tableView;

@end

在moreBangCell.m文件中对模型数据进行设置

#import "moreBangCell.h"

#import "moreBang.h"

#import "moreBangFrame.h"

#import "UIImage+HL.h"

@interface moreBangCell()

@property(nonatomic,weak) UIImageView * iconView;

@property(nonatomic,weak) UILabel * nameView;

@property(nonatomic,weak) UILabel * textView;

@end

@implementation moreBangCell

+(instancetype)cellWithTableView:(UITableView *)tableView

{

// 1、创建cell

static NSString *ID = @"Cell";

moreBangCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

if (cell ==nil) {

cell = [[moreBangCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID];

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

}

return cell;

}

// 在这个方法中添加cell的子控件

-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

self.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

if (self) {

// 头像

UIImageView * iconView = [[UIImageView alloc]init];

[self.contentView addSubview:iconView];

self.iconView = iconView;

// 昵称

UILabel * nameView = [[UILabel alloc]init];

nameView.font = [UIFont systemFontOfSize:12];

[self.contentView addSubview:nameView];

self.nameView = nameView;

// 正文

UILabel * textView = [[UILabel alloc]init];

textView.numberOfLines = 0;

textView.font = [UIFont systemFontOfSize:12];

[self.contentView addSubview:textView];

self.textView = textView;

}

return self;

}

-(void)setMorebangframe:(moreBangFrame *)morebangframe

{

_morebangframe = morebangframe;

//设置子控件的frame

[self settingFrame];

//给子控件赋值数据

[self settingData];

}

/**

*  设置数据

*/

-(void)settingData

{

// 图像数据

self.iconView.image = [UIImage imageWithNamed:_morebangframe.morebang.icon];

// 昵称

self.nameView.text = _morebangframe.morebang.name;

// 正文

self.textView.text = _morebangframe.morebang.text;

}

-(void)settingFrame

{

// 设置图像

self.iconView.frame = _morebangframe.iconF;

self.nameView.frame =  _morebangframe.nameF;

// 设置正文

self.textView.frame = _morebangframe.textF;

}

@end

4、在控制器中导入所需的头文件,定义一个数组:

@property(nonatomic,strong) NSArray * myMorebangs;

加载数据库,懒加载:

将转换好的数据对应给每行cell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

moreBangCell *cell = [moreBangCell cellWithTableView:tableView];

cell.morebangframe = self.myMorebangs[indexPath.row];

// 返回cell

return cell;

}

#pragma mark -设置每组的高度

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

// 获取当前索引的frame

moreBangFrame * moreBangFrame = self.myMorebangs[indexPath.row];

// 返回美航的行高

return moreBangFrame.cellHeight;

}

详细例子构建自定义cell,布布扣,bubuko.com

时间: 2024-10-12 20:19:15

详细例子构建自定义cell的相关文章

Dockerfile详解,以及构建自定义镜像

Dockerfile使用 前面的操作我们一直下载下载官方已经构建好的镜像,直接下载后就可以run,如果我们想要在镜像中添加自己的应用,比如在tomcat中添加自己的app,构建一个自定义的镜像,那么我们应该怎么做,这个时候就用到了Dockerfile.Dockerfile是由一系列命令和参数构成的脚本,Docker可以根据这个脚本基于某个基础镜像创建一个新的定制化的镜像,大大提高了我们部署的效率,使用Dockfile最终的结果是帮助我们定制化自己的镜像. Dockerfile初体验 下面就基于t

iOS开发UI篇—以微博界面为例使用纯代码自定义cell程序编码全过程(一)

iOS开发UI篇-以微博界面为例使用纯代码自定义cell程序编码全过程(一) 一.storyboard的处理 直接让控制器继承uitableview controller,然后在storyboard中把继承自uiviewcontroller的控制器干掉,重新拖一个tableview controller,和主控制器进行连线. 项目结构和plist文件 二.程序逻辑业务的处理 第一步,把配图和plist中拿到项目中,加载plist数据(非png的图片放到spooding files中) 第二步,字

[How to]使用自定义cell进行tableview的创建,适用于cell样式不发生变化的情况。

1.简介 在tableview中又默认的cell格式,其中组织如下: <截取自官网文档> 最终的在页面上默认的cell也只能像上述那样的显示效果,如果这种要是无法满足我们的界面要求,那么我们可以自定义cell来进行创建. 2.实现 目标:我们需要制作如下一个table,它的cell高度宽度和排版都是一样的,所以非常适合使用xib来定制cell. 1. 初始化工程后我们将table的数据存放在plist中: 2.在controller中我们以懒加载的方式将plist数据加载进来 详细方法可参考[

第?一讲:UITableView 高级 自定义cell , cell自适应高度

一.自定义cell(包括cell的自定义,以及直接赋值的方法) 自定义cell就是创建一个UITableViewCell的子类. 把cell上的控件创建都封装在子类中,简化UIViewController中的代码 示例代码分析:(这个例子包括cell的自定义,以及直接赋值的方法) 1.需要建立tabelViewCell类, 在其中进行cell上控件的添加 2.在tabelViewCell.m中进行初始化,和layoutSubviews的frame布局的操作 tabelViewCell.h定义属性

十六、C# 常用集合类及构建自定义集合(使用迭代器)

常用集合类及构建自定义集合 1.更多集合接口:IList<T>.IDictionary<TKey,TValue>.IComparable<T>.ICollection<T> 2.主要集合类:List<T>.IDictionary<TKey,TValue>.SortedDictionary<TKey,TValue>和SortedList<T> Stack<T>.Queue<T>.Linke

ThinkPHP 自动创建数据、自动验证、自动完成详细例子介绍(十九)

原文:ThinkPHP 自动创建数据.自动验证.自动完成详细例子介绍(十九) 1:自动创建数据 //$name=$_POST['name']; //$password=$_POST['password'];  ---这个注册页面传过来的POST值 下面用了自动穿件create方法就可以不用这个,会行动绑定 $user =M('User'); $User->create();   //会将传过来的$_POST数据对应到数据库的字段 $user->add();   //就可以直接写入 2:自动验证

IOS开发系列--TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式),ios7tableview索引

在此之前,我们已经创建了一个通过简单的表视图应用程序并显示预定义的图像.在本教程中,我们将继续努力,使应用程序变得更好,: >不同的行显示不同的图像 - 上个教程,我们的所有行显示相同的缩略图.那么不同的食物显示不同的图片不是更好么? >自定义视图单元-我们将展示我们自己的视图来替代默认表单元格样式 显示不同缩略图 在我们更改代码之前,让我们回顾显示缩略图的代码. 最后,我们增加了一个行代码指示UITableView每一行显示"creme_brelee.jpg"这张图片.显

IOS开发之TableView、多个TableViewCell、自定义Cell、Cell上画画(故事板+代码方式)

最近要做一个项目,有个账户设置界面,看了微博.微信.QQ,他们的账号设置都比较原生态没做什么处理.春雨医生的账号不错,做了许多处理.不说废话直接上代码. 第一步: //UserTableViewCell.h这里定义第一种Cell #import <UIKit/UIKit.h> @interface UserTableViewCell : UITableViewCell @property (weak, nonatomic) IBOutlet UIImageView *userviewcelli

IOS xib在tableview上的简单应用(通过xib自定义cell)

UITableView是一种常用的UI控件,在实际开发中,由于原生api的局限,自定义UITableViewCell十分重要,自定义cell可以通过代码,也可以通过xib. 这篇随笔介绍的是通过xib自定义cell. 首先通过gif介绍如何创建xib. 然后实现代码部分,要注意的是实现代码的同时要使代码与xib相关联.-如图 下面便是代码,一些解释我在代码中注释了. ViewController.m // // ViewController.m // CX-Xib在tableView中的简单应用