可重用的UITableViewCells的子按钮不允许我更新标签

时间:2013-02-08 18:03:33

标签: iphone objective-c xcode

我正在尝试更新可重用的UITableViewCell中的按钮标记。对于前5-8个单元格,设置标签没有问题,因为这些单元格还没有从我的理解中“重用”。一旦UI必须重用一个单元格,它就不再允许我更改标签或设置按钮的标签。我错过了什么?

UITableViewCell *cell =[tblPlaces dequeueReusableCellWithIdentifier:@"mainTableViewCell"];

if (cell == nil) {
  cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"mainTableViewCell"];
}

[[cell viewWithTag:107] setTag:indexPath.section];

1 个答案:

答案 0 :(得分:1)

这不起作用,因为您正在使用创建的第一个单元格更改按钮的标记。当您将要重复使用的单元格出列时,它的按钮标记已经从之前更改过,因此它不再是107,它就是旧索引。

我会考虑继承UITableViewCell并将该按钮添加为子类的属性。这样你就可以直接访问它,而不需要使用标签。

编辑:

以下是您真正需要做的一个非常简单的示例:

@interface MyTableViewCell : UITableViewCell
@property (nonatomic, retain) UIButton *myButton;
@end

@implementation MyTableViewCell

-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        // Create and add your button in here, or set it equal to the one you create in Interface Builder
    }
    return self;
}

@end