ios-表视图-demo-自定义cell和心得


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

static NSString *cellindentifier=@"cell";

if (self.celltype==KTableViewCellContenview) {//第一种自定义cell
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellindentifier];
if (cell==nil) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellindentifier];
UILabel*lable= [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 44)];//在这里创建性能更高,最少的创建实例滑动的时候
lable.tag=101;
[cell.contentView addSubview:lable];
}
UILabel * lable=(UILabel *) [cell.contentView viewWithTag:101];
lable.text=_dataarray[indexPath.row];
lable.font=[UIFont fontWithName:_dataarray[indexPath.row] size:16];
return cell;

}else if(self.celltype==KTableViewCellCustom){

MyCell *cell = [tableView dequeueReusableCellWithIdentifier:cellindentifier];
if (cell==nil) {
cell=[[MyCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellindentifier];
NSLog(@"排版前%d",indexPath.row);
}

return cell;

}else if(self.celltype==KTableViewCellNib){//从nib来
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellindentifier];
if (cell==nil) {
NSArray*nibs=[[NSBundle mainBundle]loadNibNamed:@"MyCell" owner:self options:nil];
cell=[nibs objectAtIndex:0];
}
UILabel * lable=(UILabel *) [cell.contentView viewWithTag:102];
lable.text=_dataarray[indexPath.row];
lable.font=[UIFont fontWithName:_dataarray[indexPath.row] size:16];
return cell;

}else{

return nil;
}

}


首先是对我们为什么自定义系统的cell尺寸没用,因为ios会在我们创建了一屏幕的cell的时候会调用
-(void)layoutSubviews{
[super layoutSubviews];
self.textlabel.frame=CGRectMake(0, 0, 300, 44);
}
对创建了的cell进行重新排版,当然这里的重新排版只会对contentview以外的进行排版,以后滑动屏幕的时候,可能是新建立的cell或者重用的都会进行排版,
想要对contentview进行手动排版的话可以手动来覆写
-(void)layoutSubviews{
[super layoutSubviews];
//在这里写,比如下面这个文件这样
}


//
// MyCell.m
// CustomCellDemo
//
// Created by liyang on 14-4-28.
// Copyright (c) 2014年 liyang. All rights reserved.
//

#import "MyCell.h"

@implementation MyCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
_label=[[UILabel alloc]initWithFrame:CGRectZero];
_label.backgroundColor=[UIColor orangeColor];
[self.contentView addSubview:_label];
}
return self;
}
-(void)layoutSubviews{
[super layoutSubviews];
_label.frame=CGRectMake(0, 0, 300, 44);
NSLog(@"排版后%d");
}
@end

ios-表视图-demo-自定义cell和心得,布布扣,bubuko.com

时间: 2024-08-05 11:12:36

ios-表视图-demo-自定义cell和心得的相关文章

UI学习笔记---第十一天UITableView表视图高级-自定义cell

自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代码 cell中的空间如何显示Model中的信息 cell中声明一个Model类型的属性,viewController中获取到Model对象后赋值给cell的Model属性 cell中重写Model的setter方法,把Model对象中的内容重新赋值给各个控件 M和V不直接通信,C负责M和V之间进行通

iOS UITableView表视图(3)自定义cell

1.自定义cell 2.多种cell 的混合使用 3.cell自适应高度 自定义cell就是创建一个UITableViewCell的子类. 把cell上的控件创建都封装在子类中,简化UIViewController中的代码 子视图控件添加到cell的contentView上 cell中的控件如何显示Model中的信息? cell中声明一个Model类型的属性,viewController中获取到Model对象后赋值给cell的Model属性,cell中重写Model的setter方法,把Mode

视图交互--表视图(UITableView)的cell交互析略

在表视图UITableView的cell上经常有一些交互,根据项目开发中的情况,需要对此进行一些规范.总结出了几种交互方法,这些方法在其他视图的交互上同样可以适用.用一个简单的例子来举例说明一下,其他交互类型与此类似,希望读者举一反三. 需求:在一个cell上,当点击按钮时,将左侧的文字同样展示在右侧显示部分.    这个需求,最主要的部分,就是获取所点击按钮的cell的问题,然后通过cell将左侧的label上的文字显示在右侧的label上. 方法: (一)交互第一种:给cell的按钮tag赋

iOS学习之UI自定义cell

一.自定义Cell 为什么需要自定义cell:系统提供的cell满足不了复杂的样式,因此:自定义Cell和自定义视图一样,自己创建一种符合我们需求的Cell并使用这个Cell.如下图所示的这些Cell都是通过自定义Cell样式实现的: 自定义Cell的步骤: 1.首先创建一个继承于UITableViewCell的类:(这是一个简易的通讯录的自定义cell) @interface RootTableViewCell : UITableViewCell // 联系人头像 @property (non

UICollectionView 集合视图用法,自定义Cell

在View里面 //1.创建UICollectionViewFlowLayout UICollectionViewFlowLayout *flowLayout=[[UICollectionViewFlowLayout alloc] init]; //设置 //1.1设置大小 flowLayout.itemSize=CGSizeMake(90, 90); //1.2设置左右间距(注意如果给定间距,无法满足屏幕的宽度,设置无效) flowLayout.minimumInteritemSpacing=

【iOS开发-62】自定义cell制作团购页面、顶部图片轮播、底部模拟加载更多功能,核心是练习代理模式

(1)效果 (2)案例源代码免费下载 团购页面+iOS源代码+头部广告轮播+底部加载更多 (3)补充 在源代码中,有一处瑕疵:就是因为是单线程,所以在上下拖动页面的时候,上面的图片轮播会停止.所以我们需要兼顾,解决方案,把定时器加到当前的runLoop中. 即在WPTgHeaderView.m的playOn方法中添加一行代码: -(void)playOn{ timer=[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector

iOS表视图常见问题

Q:表视图只需要部分单元格,怎样删除下方多余的空白单元格? A:代码如下 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { return [UIView new]; }

iOS开发-通过代码自定义cell

一.添加子控件和传递模型数据注意:子控件位置不固定,不能写死时就用代码自定义cell步骤一:将控制器改为继承UITableViewController,然后删除故事板上原来的View,新拖一个TableView,并将Class改为控制器步骤二:新建一个类WeiboCell,继承自UITableViewCell步骤三:在控制器实现文件中导入WeiboCell.h第三个数据源方法 static NSString *ID = @“weibo”: weiboCell *cell = [tableView

【iOS开发】TabelView自定义cell

自定义cell有两种方式: 第一种:通过创建xib文件. ①首先创建xib文件 ②创建xib文件对应 的模型A,名字与xib文件一样,并继承UITableViewCell类,并实现cellWithTableView的构造方法. ③在interface builder里更改xib文件默认的类,为第二步创建的模型类. ④创建数据模型B,并且A中包含数据模型B ⑤A通过懒加载B方法(就是重写B对象的setter方法)将控件赋值. 第二种:代码自定义cell ①新建一个继承UITableViewCell