Как я могу проверить несколько строк в UitableView, используя UITableViewCellAccessoryCheckmark - PullRequest
1 голос
/ 23 мая 2011

Привет всем, кого я знаю, это частый вопрос, но, пожалуйста, помогите мне. у меня есть таблица, в которой я отображаю данные из 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 Ответ

2 голосов
/ 23 мая 2011

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

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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...