UITableView和UICollectionView更新新单元格问题

时间:2014-10-08 20:41:52

标签: ios uitableview uicollectionview uistoryboard

我正在尝试使用UICollectionView作为UITableViewCell的一部分。

所以我面临的问题是,可见表格单元格的集合视图工作正常,但是当我开始滚动表格并且表格开始创建不可见的新单元格时,我面临着一些复制第一个表格单元格的行为。例如,我在第一个表视图单元格中滚动了集合视图,然后我向下滚动表格视图,我看到的新单元格与我的第一个单元格具有相同的状态。您可以在此处查看来源repovideo,以了解我在说什么。

3 个答案:

答案 0 :(得分:1)

- [UITableViewCell prepareForReuse]

答案 1 :(得分:1)

在CustomTableViewCell.h中拥有UICollectionView的属性并将其绑定在Main.storyboard中。让我们假设它是这样的:

@property (strong, nonatomic) UICollectionView *collectionView;

在ViewController.m中更改cellForRowAtIndexPath方法,因此每次需要时都会在UICollectionView内重新加载

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CustomTableViewCell"];

    [cell.collectionView reloadData];
    [cell.collectionView scrollRectToVisible:CGRectZero animated:NO];

    return cell;
}

当然,您需要在ViewController.m文件中导入CustomTableViewCell.h

答案 2 :(得分:1)

UITableView单元格中重用标识符的问题,如果在cellForRowAtIndexPath中使用单个单元格标识符,则会出现此问题

<强> 1。为每行使用动态单元格标识符,如

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:[NSString stringWithFormat:@"CustomTableViewCell_%d",indexPath.row]];
}

2.存储数组中每个集合视图的内容偏移量,并重置集合视图内容偏移量

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ......
    [cell.collectionView setContentOffset:scrollingPoint animated:NO];

    return cell;
}