0

以下のコードを確認してください。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   // I may use this object to maintain check state.
    ab_user_info *obj = nil;
    obj = [self.listData objectAtIndex: [indexPath row]];

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;

    [contact_table reloadData]; 
}

上記のコードに従って、クリックしているすべてのテーブルをチェックしました。もう一度チェックを外すにはどうすればよいですか? セルのアクセサリ タイプを教えてくれる API はありますか。

チェックされたセルとチェックされていないセルを追跡するためにモーダルobjに追加のメンバーを追加することで、他のテーブルビューで行いましたが、それなしで方法があることを知りたいだけですか?

4

3 に答える 3

3
 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
    {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
    else
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
于 2013-03-22T06:23:22.607 に答える
1

tableViewは、データプレゼンタービューオブジェクトです。

TableViewは、データを「表示」するために使用されるだけであり、データのマネージャーまたはトラッカーではありません。バックエンドのデータの属性を追跡する必要があります。つまり、すべての行がチェックされているかチェックされていないかを追跡したい場合、TableViewで管理することはできません。NSArrayまたはその他のオブジェクトタイプを使用して処理する必要があります。

于 2013-03-22T06:21:20.143 に答える
1

以下のコードを試してください:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // I may use this object to maintain check state.
        ab_user_info *obj = nil;
        obj = [self.listData objectAtIndex: [indexPath row]];
        
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }else{
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }
        
    }
于 2013-03-22T06:22:54.510 に答える