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

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

29 голосов
/ 20 декабря 2010

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

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

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

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

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

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

Ответы [ 4 ]

74 голосов
/ 26 апреля 2012

это будет правильный путь:

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

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

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

и т.д.

5 голосов
/ 20 декабря 2010

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

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

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

4 голосов
/ 20 декабря 2010

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

[myTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:indexes] 
         byExtendingSelection:NO];
0 голосов
/ 20 декабря 2010

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

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

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

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

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

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

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

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

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

...