Подтвердить что ты не робот

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

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

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

Кажется, мне нужен код

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

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

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

4b9b3361

Ответ 1

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

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

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

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

и др.

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

Кажется, мне нужен код

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

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

Удалите броски и поместите здесь значения.

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

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

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

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

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