1

我正在使用下一个代码添加特定于我最后一个单元格的内容。我不明白为什么当我滚动时,我的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
}
4

2 回答 2

1

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

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

if ([indexPath row] == rowsAmount - 1)
{
    _buttonsView.frame = CGRectMake(0, 0, 317, 101);
    [cell addSubview:_buttonsView];
}
else
{
 //Clean you cell
}
于 2013-06-17T12:53:52.840 回答
0

发生这种情况是因为该单元将被重新使用。您需要删除另一个条件(如果这不是您要附加按钮的单元格,则可能隐藏按钮。

例如

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];
        }
    }
}
于 2013-06-17T12:53:01.723 回答