我正在尝试像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;
}
由于
答案 0 :(得分: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];
});
});
答案 1 :(得分:0)
在tableView:cellForRowAtIndexPath:中,不要删除cell.contentView.subviews中的所有视图。据推测,您正在其他地方重新安装这些视图。这种技术几乎无法重复使用表格单元格。
保留内容视图的子视图;通过为它们分配不同的数据来重用它们。这应该可以提高性能。如果没有,则发布renderInstagramData:cell:。
的代码