0

我正在尝试创建像 Facebook 这样的提要页面,我正在使用延迟加载将图像加载到 tableview 单元格中。有时会在任何随机单元格上出现滚动锁定,但是当我尝试在上方或下方的任何其他可见单元格上滚动时,它会滚动。这个问题非常零星。我无法纠正导致这种行为的原因。请帮忙。

这是代码;

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //label to show values of the menu
    static NSString *CellIdentifier = @"CellIdentifier";

    // Dequeue or create a cell of the appropriate type.
    socialFeedCustomCell *cell = (socialFeedCustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil)
    {
        cell = [[socialFeedCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] ;
        cell.accessoryType = UITableViewCellAccessoryNone;
    }

    for (UIView *tempView in cell.contentView.subviews) {
        [tempView removeFromSuperview];
    }

        [self renderInstagramData:indexPath cell:cell];

    cell.contentView.layer.opaque=YES;
    cell.layer.shouldRasterize = YES;
    cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
    cell.selectionStyle=UITableViewCellSelectionStyleNone;
    cell.backgroundColor=[UIColor clearColor];
    cell.userInteractionEnabled=YES;

    return cell;
}

谢谢

4

2 回答 2

0

看起来有些东西阻塞了你的主线程(负责 UI 更新的线程)。使用 GCD 将所有与 UI 更新无关的操作移至后台队列。例如:

dispatch_queue_t jsonParsingQueue = dispatch_queue_create("jsonParsingQueue", NULL);

    // execute a task on that queue asynchronously
    dispatch_async(jsonParsingQueue, ^{
     // Parse your data here

        dispatch_async(dispatch_get_main_queue(), ^{
           // Update your UI in the main thread
           [self.tableView reloadData];
        });
    });
于 2013-12-18T14:03:34.657 回答
0

在 tableView:cellForRowAtIndexPath: 中,不要删除 cell.contentView.subviews 中的所有视图。大概您正在其他地方重新安装这些视图。这种技术几乎违背了重用表格单元的目的。

保持内容视图的子视图就位;通过为它们分配不同的数据来重新使用它们。这应该会提高性能。如果没有,则发布 renderInstagramData:cell: 的代码。

于 2013-12-19T02:52:55.297 回答