0

再利用可能な 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];
4

1 に答える 1

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
于 2013-02-08T18:41:42.093 に答える