最后一个单元格一直出现在myUITableView上

时间:2013-06-17 12:46:02

标签: ios objective-c

我正在使用下一个代码添加特定于我上一个单元格的内容。我不明白为什么当我滚动我的UITableView _buttonsView时,不断出现在最后一个单元格之外的其他单元格中。 我想到了一个快速的解决方案,它是将一个特定的视图添加到一个部分,但目前的情况让我感到困扰,我很想知道如何解决它。

NSInteger rowsAmount = [tableView numberOfRowsInSection:[indexPath section]];
cell = [tableView dequeueReusableCellWithIdentifier:@"myCombinationCell"];
if (cell == nil) {
    cell = [[MyCombinationsCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCombinationCell"];
}    
if ([indexPath row] == rowsAmount - 1)
{
    _buttonsView.frame = CGRectMake(0, 0, 317, 101);
    [cell addSubview:_buttonsView]; // _buttonsView is a few buttons inside a view
}

2 个答案:

答案 0 :(得分:1)

问题与可重复使用的细胞的使用有关,这是一个常见的问题。问题是它正在使用最后一个单元格进行重用。

如果单元格不同,您可以使用不同的标识符,或者如果单元格不是最后一个单元格,则只需“清理”该单元格:

if ([indexPath row] == rowsAmount - 1)
{
    _buttonsView.frame = CGRectMake(0, 0, 317, 101);
    [cell addSubview:_buttonsView];
}
else
{
 //Clean you cell
}

答案 1 :(得分:0)

这是因为将重新使用该单元格。你需要删除另一个条件(如果这不是你想要添加按钮的单元格,可能隐藏按钮。

E.g。

NSInteger rowsAmount = [tableView numberOfRowsInSection:[indexPath section]];
cell = [tableView dequeueReusableCellWithIdentifier:@"myCombinationCell"];
if (cell == nil) {
    cell = [[MyCombinationsCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"myCombinationCell"];
}    

if ([indexPath row] == rowsAmount - 1) {
    _buttonsView.frame = CGRectMake(0, 0, 317, 101);
    [cell addSubview:_buttonsView];
} else {
    for(id view in cell.subviews){
        if ([view isKindOfClass:[UIButton class]]) {
            NSLog(@"removing button");
            [view removeFromSuperview];
        }
    }
}