TableView

作者: 乐乐的熊 | 来源:发表于2018-11-14 09:34 被阅读1次

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;

11 tableView的contentInset

相关文章

网友评论

      本文标题:TableView

      本文链接:https://www.haomeiwen.com/subject/exldfqtx.html