0

テーブルビューの各セルにカスタムラジオボタンを追加しようとしています。テーブルビューを最初に表示したとき、ラジオボタンが表示されません。しかし、下にスクロールすると、ビューが最初にロードされたときに表示される最初のセルの下の各セルにラジオボタンが表示されます。そして、ラジオボタンが付いていないセルが表示されなくなり、そのセルを表示するために戻ると、ラジオボタンが表示されます。

この1つのメソッドのコードは次のとおりです。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *ImageCellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ImageCellIdentifier];
if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ImageCellIdentifier];
    cell.accessoryType = UITableViewCellAccessoryNone;
}
_radioBtn.frame = CGRectMake(275, 3,36,36);
_radioBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[_radioBtn setImage:[UIImage imageNamed:@"Radio-Btn.png"] forState:UIControlStateNormal];
[cell.contentView addSubview:_radioBtn];

NSString *cellValue = [_arrayRelat objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
cell.textLabel.textColor = [UIColor colorWithRed:(88.0/255.0) green:(88.0/255.0) blue:(89.0/255.0) alpha:1];

return cell;
}

質問がわからない場合はお知らせください。

4

1 に答える 1

1

新しいセルごとに_radioBtnを上書きしています!次のようなすべてのセルに対してUIButtonの新しいインスタンスを作成する必要があります。

UIButton *radioBtn = [UIButton buttonWithType:UIButtonTypeCustom];
radioBtn.frame = CGRectMake(275, 3,36,36);
[radioBtn setImage:[UIImage imageNamed:@"Radio-Btn.png"] forState:UIControlStateNormal];
[cell.contentView addSubview:radioBtn];

ブロック内に配置してif (cell == nil)、セルごとに1回だけ作成する必要があります。

于 2012-08-24T19:59:13.357 に答える