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