在我的项目中,需要将每个UITableViewCell显示为唯一的。如果有10个单元格,则所有10个单元格将具有与其关联的不同数量的子视图。为了达到这个目的,我每次创建新的单元格意味着我没有做dequeCell:
。每次我分配新的细胞。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = nil
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"abc"];
return cell;
}
可以继续这样做,还是有更好的替代方法。
并且某些单元格需要从URL下载Image,我使用以下代码段
[imgSection setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:column.icon]]]];
请帮我解决问题
答案 0 :(得分:1)
您可以使用唯一重用标识符
来完成此操作- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString* _cellIdentifier = [NSString stringWithFormat:@"RowIdent%ld", (long)indexPath.row];
TableViewCell* _cell = [tableView dequeueReusableCellWithIdentifier:_cellIdentifier];
if (!_cell)
{
_cell = [[TableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:_cellIdentifier];
}
// do awesome
return _cell;
}
您可以使细胞标识符取决于行号。在这种情况下,重用标识符将正常工作,但您的所有单元格都将是唯一的。
<强>更新强>
用于下载图片,请尝试使用UIImageView+AFNetworking.h
和
- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest
placeholderImage:(UIImage *)placeholderImage
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure;
希望它有所帮助。
答案 1 :(得分:1)
虽然您希望每个单元格都不同,但每次调用tableView:cellForRowAtIndexPath:
时都不需要新单元格 - 如果用户滚动离开单元格,然后再向后滚动,它们仍然应该看到同一个细胞。您可以正常使用dequeueReusableCellWithIdentifier:
,但使用[indexPath description]
作为reuseIdentifier
来实现此目的。