我不确定这段代码有什么问题,但在我没有添加按钮的单元格中(我有一个if,如果我需要添加或不添加)按钮在向下滚动后出现然后出现再次向上滚动。
这是tableview中单元格生成函数的代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CLASSshopCell *cell = [tableView dequeueReusableCellWithIdentifier:@"shopCell"];
SKProduct * product = (SKProduct *) _products[indexPath.row];
cell.titleCell.text = product.localizedTitle;
cell.descCell.text = product.localizedDescription;
[_priceFormatter setLocale:product.priceLocale];
cell.priceCell.text = [_priceFormatter stringFromNumber:product.price];
// already yours, so no cart button
if ([[CLASSIAPHelper sharedInstance] productPurchased:product.productIdentifier]) {
cell.priceCell.text = @"Already yours";
} else {
UIButton *buyButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *btn = [UIImage imageNamed:@"cart.png"];
UIImage *btnh = [UIImage imageNamed:@"cartHover.png"];
[buyButton setBackgroundImage:btn forState:UIControlStateNormal];
[buyButton setBackgroundImage:btnh forState:UIControlStateHighlighted];
buyButton.frame = CGRectMake(cell.bounds.size.width - 40,40, 24, 24);
buyButton.tag = indexPath.row;
[buyButton addTarget:self action:@selector(buyButtonTapped:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:buyButton];
}
return cell;
}
记录一些我没注意到的东西,条件总是经过验证。你有什么想法吗?
答案 0 :(得分:0)
我自己使用另一个问题的部分代码解决了。 基本上我现在正在循环进入单元格,在再次进行测试之前清除所有按钮。
for (UIView *subview in [self.contentView subviews])
{
if ([subview isKindOfClass:[UIButton class]])
{
[subview removeFromSuperview];
}
}
答案 1 :(得分:0)
您添加按钮的单元格最终会被重复使用。这就是为什么你会在错误的单元格上显示按钮;)
作为一种解决方案,您应该为包含和不包含按钮的单元格使用不同的重用标识符。