独特的UITableViewCell具有不同的功能

时间:2014-08-01 05:31:04

标签: ios uitableview

在我的项目中,需要将每个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]]]];

请帮我解决问题

2 个答案:

答案 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;

方法(https://github.com/AFNetworking/AFNetworking)。

希望它有所帮助。

答案 1 :(得分:1)

虽然您希望每个单元格都不同,但每次调用tableView:cellForRowAtIndexPath:时都不需要新单元格 - 如果用户滚动离开单元格,然后再向后滚动,它们仍然应该看到同一个细胞。您可以正常使用dequeueReusableCellWithIdentifier:,但使用[indexPath description]作为reuseIdentifier来实现此目的。