私はアプリケーションを開発しています。私は自分で問題を解決しようとしましたが、それを理解できませんでした。これを解決する方法を知っている人がいれば、私を助けてください。iPhoneでCheckBoxを使用したTableViewの行
すべての行にチェックボックスを含む1つのUITableViewを作成しました。チェックボックスをタップすると、そのチェックボックスだけが選択されますが、現在は最後のチェックボックスのみが選択されています。私は以下の私の現在のコードを提供している、あなたが変更する必要があるものが表示されたら教えてください。
ありがとうございました。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.text = [selectPlayer objectAtIndex:indexPath.row];
checkboxButton = [[UIButton alloc]initWithFrame:CGRectMake(0, 8, 25, 25)];
checkboxButton.tag = indexPath.row;
[checkboxButton setTitle:nil forState:UIControlStateNormal];
[checkboxButton addTarget:self action:@selector(checkboxButton:)forControlEvents:UIControlEventTouchUpInside];
[checkboxButton addSubview:checkImage];
cell.accessoryView = checkboxButton;
return cell;
}
-(void)checkboxButton:(id)sender {
NSIndexPath *indexPath = [selectTableView indexPathForCell:(UITableViewCell *)[[sender superview] superview]];
switch (indexPath.section) {
case 0:
switch (indexPath.row) {
case 0:
[checkImage setImage:[UIImage imageNamed:@"checkbox-checked.png"]];
NSLog(@"button pressed at section %d and %d row", indexPath.section, indexPath.row);
break;
case 1:
//[checkImage setImage:[UIImage imageNamed:@"checkbox-checked.png"]];
NSLog(@"button pressed at section %d and %d row", indexPath.section, indexPath.row);
break;
default:
break;
}
break;
default:
break;
}
}
私は右のあなたを理解していれば、あなたは、各セル内のボタンを持つテーブルビューを持っています。特定のセルのボタンをクリックすると、この画像だけが変更されます。 NSLog出力に正しいセクションと行の値を取得していますか? – user944351
これは、セルが再びスクロールダウンされるたびに、テーブルビューは毎回新しいセルを作成しないので、すでに割り当てられているセルを再利用するため、配列のようなデータ構造のチェックボックスのストア値が問題になるため、または辞書を使用している場合、テーブルビューを読み込んでいるときにチェックボックスをクリックすると値がデータ構造体から値を取得します –
@ user944351いいえセクションと行が常に0番目のセクション0行目を表示していません – vishiphone