Хранение нескольких выборов в секционном UITableView - PullRequest
0 голосов
/ 19 июля 2011

У меня есть список людей в UITableView, секционированный по первой букве имени человека.

Я хочу, чтобы этот список позволял делать выбор НЕСКОЛЬКО (представьте 100 человек в списке, разделенном по имени,с флажком рядом с каждым именем).

Нет проблем с пользовательским интерфейсом - все отсортировано.

Как сохранить выбор?

Мне нужен способ сохранить иполучить выборки (простые значения BOOL) из какого-либо массива с помощью indexPath, чтобы найти их.

До использования разделов это было легко - просто NSMutableArray и извлекали его с помощью indexPath.row.Но с разделами я должен найти ОБА раздел и строку.Многомерные массивы, кажется, не подходят для Objective C, хотя многомерный массив c был предложен где-то в одном посте.

Я мог бы сохранить в базе данных - но это большая часть сохранения и извлечения при прокрутке вверхи вниз по таблице, проверяющей и снимающей галочки .... и мне все равно не нужно, чтобы данные сохранялись в БД - собираюсь затем создавать записи с указателями на выбранные записи.

Конечно, я не первый человекчтобы решить эту дилемму.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 20 июля 2011

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

UITableViewCell *currentCell = [self.tableView cellForRowAtIndexPath:indexPath];
if (currentCell.accessoryType == UITableViewCellAccessoryNone) {
    currentCell.accessoryType = UITableViewCellAccessoryCheckmark;
    //save/delete your person or index in/from a global mutable array
}

И в вашем cellForRowATIndexPath вы можете установить аксессуар на основе того, что находится в массиве, а что нет.Надеюсь, это поможет:)

0 голосов
/ 20 июля 2011

Мне по-прежнему было бы интересно услышать идеи - но, потратив несколько часов (до 3 утра!) И не придумав решения, я решил использовать NSDictionary, создавая ключ из строки и раздела indexPath, таким образом:

 - (void) setSelected:(NSMutableDictionary*)dict forIndexPath:(NSIndexPath*)indexPath withValue:(BOOL)selected{

            NSString *cellIdentifier = [NSString stringWithFormat:@"Cell-%i-%i", (int)indexPath.section, (int)indexPath.row];

            [dict setObject:[NSNumber numberWithBool:selected] forKey:cellIdentifier];

 }

- (BOOL) getSelected:(NSMutableDictionary*)dict forIndexPath:(NSIndexPath*)indexPath {

    NSString *cellIdentifier = [NSString stringWithFormat:@"Cell-%i-%i", (int)indexPath.section, (int)indexPath.row];
    BOOL selected=[[dict objectForKey:cellIdentifier]  boolValue];

    return selected;

}
- (BOOL) toggleSelected:(NSMutableDictionary*)dict forIndexPath:(NSIndexPath*)indexPath {

    NSString *cellIdentifier = [NSString stringWithFormat:@"Cell-%i-%i", (int)indexPath.section, (int)indexPath.row];

    BOOL selected=[[dict objectForKey:cellIdentifier]  boolValue];
    selected=!selected;

    [self setSelected:dict forIndexPath:indexPath withValue:selected];

    return selected;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...