UITableView множественный выбор, предварительно выбранные элементы - PullRequest
2 голосов
/ 07 марта 2012

Я работаю над проектом iOS 5 и использую табличное представление для выбора элементов, которые будут добавлены в набор.Я правильно установил AllowsMultipleSelectionDuringEditing на ДА, чтобы маркеры располагались слева, а отступ contentView.

Теперь моя проблема в том, что у меня есть список предварительно выбранных элементов, которые пользователь должен видеть при вводев режиме редактирования.Я заглянул в документацию, но ничего не нашел, чтобы найти способ предварительно выбрать список путей индекса при входе в режим редактирования с включенным множественным выбором.Есть ли способ, предоставленный Apple, для предварительного выбора определенного количества элементов, или я должен сам разработать эту функцию?

1 Ответ

6 голосов
/ 07 марта 2012

Хорошо, я узнал, как это сделать, и хорошим и элегантным способом, это было проще, чем исключено:

UITableView имеет метод selectRowAtIndexPath:animated:scrollPosition:, который выбирает строку. Лучший способ выполнить то, что я искал, - это создать NSSet из NSIndexPaths и сразу после установки UITableView в режиме редактирования повторить набор и выбрать ячейку один за другим.

Например, таким образом:

- (NSArray *)_preselectedIndexPaths 
{
    NSMutableSet *preselectedItems = [NSMutableSet set];
    NSUInteger s = 0, r = 0;
    for (NSArray *section in self.data) {
        for (id item in section) {
            if ([item shouldBePreselected]) { //this is the condition
                [preselectedItems addObject:[NSIndexPath indexPathForRow:r inSection:s]];
            }
            r++;
        }
        s++;
    }

    return [preselectedItems allObjects];
}

, а затем для выбора элементов в табличном представлении:

[self.tableView setEditing:![self.tableView isEditing] animated:YES];

for (NSIndexPath *ip in [self _preselectedIndexPaths]) 
    {
       [self.tableView selectRowAtIndexPath:ip 
                                   animated:YES 
                             scrollPosition:UITableViewScrollPositionNone];
    }

Я надеюсь, что это может помочь кому-то еще.

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