UITableViewの各セルでラジオボタン未チェックの画像として3つのUIButtonを追加しました。誰かがクリックするとボタン画像がラジオボタンの画像に変わります。私がUITableViewをスクロールしているときに、スクロールしている間、チェックされたボタンの画像が消去されています。UITableViewCell上のボタン画像がスクロール中に消去されています
誰かが私に何か考えを与えることができます..!
このIはUIButtons
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
static NSString *CellSetup = @"CellSetup";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellSetup] autorelease];
}
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.tag=[indexPath row];
myButton = [[UIButton alloc]initWithFrame:CGRectMake(20, 20, 20, 20)];
[myButton setImage:[UIImage imageNamed:@"radiounselect.png"] forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(selectRadioButon:) forControlEvents:UIControlEventTouchUpInside];
myButton.tag = ++tagCount;
[cell.contentView addSubview:myButton];
tagCount++;
myButton2 = [[UIButton alloc]initWithFrame:CGRectMake(80, 20, 20, 20)];
[myButton2 setImage:[UIImage imageNamed:@"radiounselect.png"] forState:UIControlStateNormal];
[myButton2 addTarget:self action:@selector(selectRadioButon:) forControlEvents:UIControlEventTouchUpInside];
myButton2.tag = tagCount;
[cell.contentView addSubview:myButton2];
tagCount++;
myButton3 = [[UIButton alloc]initWithFrame:CGRectMake(140, 20, 20, 20)];
[myButton3 setImage:[UIImage imageNamed:@"radiounselect.png"] forState:UIControlStateNormal];
[myButton3 addTarget:self action:@selector(selectRadioButon:) forControlEvents:UIControlEventTouchUpInside];
myButton3.tag = tagCount;
[cell.contentView addSubview:myButton3];
return cell;}
を宣言したコード - (ボイド)selectRadioButon:(ID)、送信者{
btnTag = [sender tag];
NSArray *arr = self.view.subviews;
UITableView *tblCell = [arr objectAtIndex:0];
NSArray *cellAry = tblCell.subviews;
for (int i = 0; i <[cellAry count]; i++) {
UITableViewCell *content = [cellAry objectAtIndex:i];
NSArray *contentAry = content.contentView.subviews;
for (int j = 0; j <[contentAry count]; j++) {
UIButton *button = [contentAry objectAtIndex:j];
if (btnTag == button.tag) {
for (int k = 0; k <[contentAry count]; k++) {
UIButton *button = [contentAry objectAtIndex:k];
if (btnTag == button.tag) {
[button setImage:[UIImage imageNamed:@"radioselect.png"] forState:UIControlStateNormal];
}
else
[button setImage:[UIImage imageNamed:@"radiounselect.png"] forState:UIControlStateNormal];
}
return;
}
}
}
ここで3つのUIButtonを追加していますか?どのような方法で? スクロール中に画像が消去されると、次のような方法で何か間違っているように聞こえます: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {} 'あなたのコードで 'UITableViewCell'を再利用しますか? – werner
うんん、チェック可能なボタンを使ってテーブルをプログラミングするのに約5分掛かることは、テーブルセルがビューからスクロールするとすぐに破棄されるということです。セルに関連付けられた変更可能なデータ(チェックされたステータスなど)は、別の配列に格納する必要があります。最初に必要な配列のサイズがわからない場合は、NSMutableArrayを使用できます。 –