2012-04-17 7 views
0

私はアプリケーションを開発しています。私は自分で問題を解決しようとしましたが、それを理解できませんでした。これを解決する方法を知っている人がいれば、私を助けてください。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; 
    } 
} 
+0

私は右のあなたを理解していれば、あなたは、各セル内のボタンを持つテーブルビューを持っています。特定のセルのボタンをクリックすると、この画像だけが変更されます。 NSLog出力に正しいセクションと行の値を取得していますか? – user944351

+0

これは、セルが再びスクロールダウンされるたびに、テーブルビューは毎回新しいセルを作成しないので、すでに割り当てられているセルを再利用するため、配列のようなデータ構造のチェックボックスのストア値が問題になるため、または辞書を使用している場合、テーブルビューを読み込んでいるときにチェックボックスをクリックすると値がデータ構造体から値を取得します –

+0

@ user944351いいえセクションと行が常に0番目のセクション0行目を表示していません – vishiphone

答えて

0

私はあなたの問題はあなたが右の方法を使用していないということだと思う、私はあなたが選択した行のindexPath、とのインスタンスを持ってここに

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *) indexPath{ } 

を実装する必要があると思いますtableView、あなたがする必要があるのは、TableViewCellをインスタンス化し、チェックマークをチェックすることだけです。

+0

親愛なるmarcos私はこのメソッドを知っていますどのコードを上記のコードからこのメソッドに貼り付けますか? – vishiphone

+0

このメソッドの目的は、単一の行が選択またはタップされたときに処理することです。その選択が発生すると、呼び出されるメソッドがいくつかあり、これが選択された行の更新を処理するために使用される最も一般的なメソッドです。指定された行をindexPathから取得し、その時点でイメージを追加する必要があります。 – Chad

0

cellForRowAtIndexPathメソッド内のチェックボックスボタンを宣言します。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

関連する問題