UITableVIew方法

使用TableView遇到的问题

2016-02-28  本文已影响555人  LikeSmilence

场景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);

上一篇下一篇

猜你喜欢

热点阅读