tableView Cell 出现错乱的三种解决方案

2018-05-03  本文已影响0人  dxin_101

tablecell 原来应该这样写

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

{

 static NSString *CellIdentifier =@"Cell";

 // UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; //改为以下的方法

 if (cell ==nil) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }

 //...其他代码

}

然而我们为了解决一些问题,进行改变

1. 根据indexPath准确地取出一行,而不是从cell重用队列中取出

在cell中 将UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; //改为更改为 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

2.通过为每个cell指定不同的重用标识符(reuseIdentifier)来解决。

NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%d%d", [indexPath section], [indexPath row]];//以indexPath来唯一确定cell

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];//出列可重用的cell

3.删除重用cell的所有子视图

if (cell ==nil) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }

 else

    {

 //删除cell的所有子视图

 while ([cell.contentView.subviews lastObject] !=nil)

        {

            [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];

        }

    }

上一篇 下一篇

猜你喜欢

热点阅读