Как использовать NSIndexSet

В Objective-C моя программа открывает окно и отображает таблицу. Я хочу выделить указанную строку таблицы.

Как мне это сделать?

Мне кажется нужен код

[myTableView selectRowIndexes:(NSIndexSet *) byExtendingSelection:(BOOL)];

Я посмотрел на документацию для разработчиков и понял, что BOOL должен быть NO.

Глядя на документы NSIndexSet, я не могу понять, какой должен быть правильный синтаксис.

4 ответа

Было бы правильно:

NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, 3)];

или вы можете использовать NSMutableIndexSet для случайных индексов:

NSMutableIndexSet *mutableIndexSet = [[NSMutableIndexSet alloc] init];
[mutableIndexSet addIndex:0];
[mutableIndexSet addIndex:2];
[mutableIndexSet addIndex:9];

и т.п.

Распечатка NSIndexSet в отладчике покажет вам, что они внутренне NSRanges. Чтобы создать его, вы можете указать диапазон или один явный индекс (из которого будет создан диапазон); что-то вроде

NSIndexSet *indexes = [[NSIndexSet alloc] initWithIndex:rowToHighlight];
[myTableView selectRowIndexes:indexes byExtendingSelection:NO];
[indexes release];

Обратите внимание, что все индексы должны быть целыми числами без знака (NSUIntegersконкретно).

Я бы использовал фабричный метод, чтобы избежать необходимости управлять памятью:

[myTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:indexes] 
         byExtendingSelection:NO];

Мне кажется нужен код

[myTableView selectRowIndexes:(NSIndexSet *) byExtendingSelection:(BOOL)];

Нет; это броски без чего-либо, что недействительно.

Удалите приведение и поместите туда значения.

Я посмотрел на документацию разработчика и понял, что BOOL должно быть NO,

Да, потому что вы не хотите расширять выбор, вы хотите заменить его.

Глядя на документы NSIndexSet, я не могу понять, какой должен быть правильный синтаксис.

Так же, как для передачи любой другой переменной или выражения сообщения.

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

Другие вопросы по тегам