1 可以分为注册式写法和非注册式写法
1>注册式
对于tableview
[detailTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"ClassDetailTableViewCell_ID"];
在return cell的时候
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ClassDetailTableViewCell_ID" forIndexPath:indexPath];
2>非注册式
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ClassDetailTableViewCell_ID"];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ClassDetailTableViewCell_ID"];
}
cell.textLabel.text = @"";
return cell;
使用定制cell也是如此,只是换个类名;
3.静态单元格
https://blog.csdn.net/weiwosuoai/article/details/45233119
2 UItableviewCell中获取父类tableView
//iOS7.0前,self的superview就是tableview;7.0后,是self.superview.superview才是tableView;
-(UITableView *)getSuperTableView{
id view1 = [self superview];
while (view1 && ![view1 isKindOfClass:[UITableView class]]) {
view1 = [view1 superview];
}
UITableView *quizTableViewView = (UITableView*)view1; //避免iOS版本检查 获取父类(iOS7 super.super)
return quizTableViewView;
}
//获取当前cell的父视图
-(UICollectionView *)getSuperCollectionView{
id view1 = [self superview];
while (view1 && ![view1 isKindOfClass:[UICollectionView class]]) {
view1 = [view1 superview];
}
UICollectionView *quizCollectionView = (UICollectionView*)view1; //避免iOS版本检查 获取父类(iOS7 super.super)
return quizCollectionView;
}
3 设置tableview的frame
不用计算frame的4个值,直接先设置frame未CGSizeZero,然后使用masonry设置该tableView的edges
image.png
4 创建tableviewCell时使用的identifer;
5 bounce属性 禁止滑出超出顶部和底部的区域
设置该属性 tableview。bounce = NO;
6 自动计算行高
1>添加好约束
2>设置tableview的属性
weclassTableView.estimatedRowHeight = 200;
weclassTableView.rowHeight = UITableViewAutomaticDimension;
注意:1不要在设置tableview的rowHeight;2不要覆写cell的setFrame方法;
7 缓存高度处理
扩展
8 UITableViewCell上的按钮复用问题
例:cell上有点赞按钮,需要点赞后cell拖到下面再回来后,该点赞效果还在;
解:
1.当点赞事件触发时,记住该按钮的状态值和所在行数,然后传递给tableVIew;
image.png
image.png
添加全局字典保留回传的值;
2.cell添加是否点赞的属性;
image.png
3.当cell复用的时候,将保存的值传递给点赞属性;
image.png
4.该点赞属性的set方法中改变状态;
image.png
9 accessoryView
accessoryView:tableViewcell的附属视图,位于cell的右侧;
1、附属视图-官方类型
cell.accessoryType = UITableViewCellAccessoryNone;
2、自定义
cell.accessoryView =[[UIView alloc]init];
10 selectionStyle(cell)和separatorStyle(tableView)
1.cell的选中样式
cell.selectionStyle = UITableViewCellSelectionStyleNone;
2.分割线
self.tableView.separatorStyle =UITableViewCellSeparatorStyleNone;
11 keyboardDismissMode
keyboardDismissMode:键盘消失的模式;该方法是UIScrollView中的属性;
滚动则会隐藏键盘
self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
网友评论