1

スクロールダウンを開始するとチェックマークが消える方法。

didSelectRowAtIndexPathメソッドのコードは次のとおりです。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];

    if (selectedCell.accessoryType == UITableViewCellAccessoryCheckmark) {
        selectedCell.accessoryType = UITableViewCellAccessoryNone;

        if ([[[collectionDataArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"creditHours"]==@"1") {
            totalHoure = totalHoure - 1;
        }

    } else {

        selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;

        if ([[[collectionDataArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"creditHours"]==@"1") {
            totalHoure = totalHoure + 1 ;
        }
    }
}

何か問題ある ?または他のテクニックがあれば。

4

2 に答える 2

2

モデルのどこかにチェックマークを保存してください。ユーザーが をスクロールすると、その場でセルが再作成されますUITableView。次に、 でチェックマークを正しく再設定してtableView:cellForRowAtIndexPath:ください。

于 2012-07-13T00:00:13.173 に答える
1

これを試して、チェックマークセルデータを保存してください。これで問題が解決することを願っています:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
       UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];

       if ([selectedCell accessoryType] == UITableViewCellAccessoryNone || [selectedCell accessoryType]== UITableViewCellAccessoryDisclosureIndicator)   
       {
           [selectedCell setAccessoryType:UITableViewCellAccessoryCheckmark];
                    [Mybuffer addObject:[arrItem objectAtIndex:indexPath.row]];
       }
       else
       {
           [selectedCell setAccessoryType:UITableViewCellAccessoryNone];
           [Mybuffer removeObject:[NSNumber numberWithInt:indexPath.row]];
       }
}
于 2014-07-02T06:36:36.440 に答える