как я могу проверить несколько строк в uitableview с помощью UITableViewCellAccessoryCheckmark

#objective-c #uitableview

#objective-c #uitableview

Вопрос:

всем привет, я знаю, что это частый вопрос, но, пожалуйста, помогите мне. у меня есть tableview, в котором я отображаю данные из NSArray. я хочу выбрать несколько строк с помощью UITableViewCellAccessoryCheckmark. но при прокрутке галочки исчезают. все говорят о ячейке многократного использования. Я понимаю эту концепцию, но не могу решить свою проблему. Поэтому, пожалуйста, кто-нибудь может дать мне реализацию методов cellForRowAtIndexPath и didSelectRowAtIndexPath спасибо. Это срочно.Я использую этот код

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

{
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; 

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];

    }


    cell.textLabel.text = [listData objectAtIndex:indexPath.row];


    [cell setAccessoryType:UITableViewCellAccessoryNone];
    for (int i = 0; i < selectedIndexes.count; i  ) {
        NSUInteger num = [[selectedIndexes objectAtIndex:i] intValue];

        if (num == indexPath.row) {
            [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
            // Once we find a match there is no point continuing the loop
            break;
        }
    }
  

Ответ №1:

Если я правильно понимаю вашу проблему, у вас есть массив и вы добавляете индексы в массив всякий раз, когда выбираются строки. Это не сработает. Я предлагаю вам иметь словарь для сопоставления выбранных строк,

 NSMutableDictionary *selectedIndexDict;
  

В вашем didSelectRowAtIndexPath: методе,

 [selectedIndexDict setValue:[NSNumber numberWithBool:YES] forKey:[NSString stringWithFormat:@"%d", indexPath.row]];
  

И в вашем cellForRowAtIndexPath: методе,

 [cell setAccessoryType:UITableViewCellAccessoryNone];

if ([[selectedIndexDict valueForKey:[NSString stringWithFormat:@"%d", indexPath.row]] boolValue]) {

    [cell setAccessoryType:UITableViewCellAccessoryCheckmark];
}
  

Комментарии:

1. спасибо вам, это было действительно полезно и быстро для написания кода 🙂 еще раз спасибо