美文网首页UITableVIew方法
使用TableView遇到的问题

使用TableView遇到的问题

作者: LikeSmilence | 来源:发表于2016-02-28 20:55 被阅读555次

    场景1:

    我的TableView的Cell有三种样式,但是我只创建一种cell想实现三种cell的样式,就会遇到问题。

    比如cell中有3个imageView 我全部都显示出来, 但是由于重用池机制会当这个cell消失其他cell再出现的时候 我只想显示1张图片 其他两个imageView没有赋值,但是仍然显示3个图片。

    这个问题就是因为重用池的原因,重写

    - (void)prepareForReuse

    {

    [super prepareForReuse];

    }

    方法可解决这个问题

    场景2:

    未知原因不创建tableView的Cell, 有以下几种可能,

    1、没签协议

    2、没设置代理

    3、cell的高度是0 也会不走

    4、数据没有刷新

    场景3:

    tableView的section的header无法返回自定义view

    如果想返回自定义view需要和cell一样注册一个重用池

    场景4:

    tableView的样式显示不正确。

    需要在layoutSubView方法中设置tableView中的各种样式,

    如果写在这里仍然不对一定是没写[super layoutSubViews]方法

    场景5:

    想更改系统的tableVIewCell的各种控件位置什么的,需要重写tableViewCell的类;

    场景6: Tableview的Cell在ios7系统下不能置顶,空出几行

    解决办法在viewdidload里面加入self.automaticallyAdjustsScrollViewInsets = NO

    如果没有设置self.automaticallyAdjustsScrollViewInsets = NO,那么iOS7下会自动让scrollView滑动多次,以满足UITableView第一行的显示需要,这又带来了另外一个问题,下拉刷新的View的frame也随之发生了改变,导致整个下拉刷新不可用了。

    self.automaticallyAdjustsScrollViewInsets 这个属性是IOS7才有的新方法,目的就是为了让scrollView自动适应屏幕,如果self.automaticallyAdjustsScrollViewInsets = NO。

    场景7:关于tableView左边空余15像素的问题;

    左边总有空余的地方

    解决方法:

    [self.tableView setSeparatorInset:UIEdgeInsetsZero];

    [self.tableView setLayoutMargins:UIEdgeInsetsZero];

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {

    [cell setSeparatorInset:UIEdgeInsetsZero];

    }

    if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {

    [cell setLayoutMargins:UIEdgeInsetsZero];

    }

    }

    场景8:关于tableView多余分割线隐藏的问题

    有时候下面的cell我们没用,但是还是有分割线,隐藏方法

    [tableView setTableFooterView:[[UIView alloc] init]];

    场景9:关于tableView的headerCell之间有间距的问题

    这是由于tableView的style设置错误,前一种是UITableViewStylePlain,后一种是UITableViewStyleGrouped

    要注意对style的理解,不是tableView有很多section就要选择UITableViewStyleGrouped,UITableViewStyleGrouped只是展现tableView的一种样式而已,与section有几个无关

    场景10:关于select和Deselect的问题

    这个问题纯眼拙~

    选择和取消选择,方法名字长,细心细心再细心,不然一旦出错,调bug想不到是这出错真的会很辛苦~

    场景11:隐藏单行分割线

    cell.separatorInset = UIEdgeInsetsMake(0, 屏幕宽, 0, 0);

    相关文章

      网友评论

        本文标题:使用TableView遇到的问题

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