dequeueReusableCellWithIdentifier forIndexPath

时间:2013-08-17 18:51:45

标签: iphone ios objective-c

我有一个使用NSLayoutConstraints的自定义/子类UITableViewCell。最左边的UIImageView可能会或可能不会填充图像,如果没有,此字段右侧的对象将自然地向左移动。在自定义UITableViewCell中运行良好,但是我将使用我的自定义UITableViewController填充内容。不幸的是,下面的代码将使用图像填充每行cell.dispatchedView - 尽管我已经陷入了不填充任何内容的行。

这与dequeueReusableCellWithIdentifier有关。想法?

static NSString *CellIdentifier = @"CellIdentifier";


- (void)viewDidLoad {
    [super viewDidLoad];

    [self.tableView registerClass:[NXGActiveUnitsCell class] forCellReuseIdentifier:CellIdentifier];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {

    NSDictionary *item = [self.model.dataSource objectAtIndex:indexPath.row];

    NXGActiveUnitsCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    if([[[item objectForKey:@"cfs_no"] clean] length] > 0) {
        cell.dispatchedView.image = [UIImage imageNamed:@"p.png"];
        NSLog(@">>>%@",[item objectForKey:@"cfs_no"] );
    } else {
        NSLog(@">>> i got nothing so I should not touch this row...");
    }

    cell.departmentIconView.image = [UIImage imageNamed:@"f.png"];
    cell.unitLabel.text = [item valueForKey:@"unit_id"];

    return cell;
}

1 个答案:

答案 0 :(得分:2)

我不知道这是否已经解决了你的问题,但你应该这样做 肯定设置

cell.dispatchedView.image = nil;
的情况下,因为细胞被重复使用。