私のアプリケーションでは、配列を使用して tableView をロードし、必要に応じて各行にサブビューとして UIButton を追加しました。再利用されたセルにはボタンが追加されることがわかっているので、この事実を念頭に置いて、以下のように -cellForRowAtIndexPath メソッドを実装しました
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"surgeon"];
if (!cell) {
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"surgeon"];
}
[[cell.contentView subviews]
makeObjectsPerformSelector:@selector(removeFromSuperview)];
//before adding button to the contentView I've removed allSubViews
UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
[btn setFrame:CGRectMake(142, 4, 28, 28)];
[btn setImage:[UIImage imageNamed:[NSString stringWithFormat:@"infoicon.png"]] forState:UIControlStateSelected];
[btn setSelected:YES];
[btn addTarget:self action:@selector(checkbtnClicked:) forControlEvents:UIControlEventTouchUpInside];
[btn setTag:indexPath.row];
if (indexPath.row==1) {
NSLog(@"CELL %@ CONTNTVEW %@",cell.subviews,cell.contentView.subviews);
}
[cell.contentView addSubview:btn];
return cell;
}
私の問題は、TableViewが最初にうまくロードされることですが、TableViewをスクロールすると、追加したボタンが削除されますが、サブビューとしてボタンを追加する前にサブビューの削除が行われますが、この作業を行うのに役立ちます