Хорошо, я узнал, как это сделать, и хорошим и элегантным способом, это было проще, чем исключено:
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];
}
Я надеюсь, что это может помочь кому-то еще.