0

通貨をリストするテーブルビューがあります...一度に1つだけ選択できるようにしたいです(ユーザーが既に選択されているセルをクリックした場合、選択されたままにする必要があります)...チェックマークはuiimageviewです...ここコードは次のとおりです。

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [[self.currencyList fetchedObjects] count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CurrencyCell";

    CurrencyCell *cell = (CurrencyCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    Currency *currency = [self.currencyList objectAtIndexPath:indexPath];

    cell.currencyName.text = currency.name;
    cell.curencyAbreviation.text = currency.abreviation;

    if ([currency.isDefault boolValue] == YES) {
        cell.selectedCurrency.image = [UIImage imageNamed:@"Checkmark.png"];
        checkedCell = indexPath;
        NSLog(@"The default currency cellfor row is :%@",currency);
        NSLog(@"the checkedcell index path is:%@",checkedCell);
    }

    return cell;

}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // [self.delegate theSelectedCurrencyIs:[self.currencyList objectAtIndexPath:indexPath]];

    if (![indexPath isEqual:checkedCell]) {
    CurrencyCell *cell = (CurrencyCell *)[self.tableView cellForRowAtIndexPath:indexPath];
    cell.selectedCurrency.image = [UIImage imageNamed:@"Checkmark.png"];
    selectedCurrency = [self.currencyList objectAtIndexPath:indexPath];
        NSLog(@"The selected currency is %@",selectedCurrency);
        NSLog(@"The indexpath of the new selected currency is %@",indexPath);
    CurrencyCell *previoslySelectedCell = (CurrencyCell *)[self.tableView cellForRowAtIndexPath:checkedCell];
        NSLog(@"name of the previously selected cell %@",previoslySelectedCell.currencyName);
    previoslySelectedCell.selectedCurrency.image = nil;
        //  [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath,checkedCell, nil] withRowAnimation:UITableViewRowAnimationNone];
        [self.tableView reloadData];
    checkedCell = indexPath;
    }
}

問題は、選択した複数のセルにチェックマークの画像が表示されていることです.選択したインデックスパスは問題ありません...しかし、多くのセルにチェックマークが付いているように見えます...スクロールする画面ごとにいくつかのように見えます

ここで何が問題になるでしょうか?

4

0 に答える 0