UITableView中的自定义单元格使图像在滚动时重叠

时间:2014-06-18 10:13:27

标签: ios objective-c uitableview

我创建了自定义表格视图单元格,上面有2个图像(最初设置为隐藏)。

当我渲染每个单元格时,我检查一些状态并设置图像可见/隐藏属性。

当我打开那张桌子时,当我滚动到底部然后回到顶部时,它看起来很好,前2-3个单元格都显示了两个图像。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"myCustomCell";{
OrderCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell == nil){
        [tableView registerNib:[UINib nibWithNibName:@"myCustomCell" bundle:nil] forCellReuseIdentifier:CellIdentifier];
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    }
...
cell.Title.text = @"some value";
...
if(...){
cell.image1.hidden = YES;
cell.image2.hidden = NO;
}
else{
cell.image1.hidden = NO;
cell.image2.hidden = YES;
}
...

为什么会发生这种情况?
问题可能是CellIdentifier

更新
首先尝试:

OrderCustomCell *cell; 

    if(cell == nil){

        [tableView registerNib:[UINib nibWithNibName:@"myCustomCell" bundle:nil] forCellReuseIdentifier:CellIdentifier];
        cell = [tableView dequeueReusableCellWithIdentifier:nil];

    }

第二次尝试:

OrderCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell == nil){

        [tableView registerNib:[UINib nibWithNibName:@"myCustomCell" bundle:nil] forCellReuseIdentifier:nil];
        cell = [tableView dequeueReusableCellWithIdentifier:nil];

    }

3 个答案:

答案 0 :(得分:0)

将此作为标识符。

NSString *identifier =[NSString stringWithFormat:@"%d",indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }

我希望这能解决你的问题。我有同样的问题,现在修好了。

答案 1 :(得分:0)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
 static NSString *CellIdentifier = @"myCustomCell";
OrderCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];

if(cell == nil){
    [tableView registerNib:[UINib nibWithNibName:@"myCustomCell" bundle:nil] forCellReuseIdentifier:CellIdentifier];
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
}
...
cell.Title.text = @"some value";
 ...
if(...){
cell.image1.hidden = YES;
cell.image2.hidden = NO;
}
else{
cell.image1.hidden = NO;
cell.image2.hidden = YES;
}
...

答案 2 :(得分:0)

你可以使用,它适合我。

            OrderCustomCell * orderCustomCell = (OrderCustomCell *)[tableView dequeueReusableCellWithIdentifier:nil];

            if (orderCustomCell==nil) {
                NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"OrderCustomCell" owner:self options:nil];
                orderCustomCell = [nib objectAtIndex:0];
            }