Как использовать NSIndexSet
В Objective-C моя программа открывает окно и отображает таблицу. Я хочу, чтобы указана указанная строка таблицы.
Как это сделать?
Кажется, мне нужен код
[myTableView selectRowIndexes:(NSIndexSet *) byExtendingSelection:(BOOL)];
Я посмотрел документацию разработчика и выяснил, что BOOL не должен быть NO.
Изучая документы NSIndexSet, я не могу понять, какой должен быть правильный синтаксис.
Ответы
Ответ 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, я не могу понять, какой должен быть правильный синтаксис.
То же, что и для передачи любой другой переменной или выражения сообщения.
Вам нужно создать индексный набор, а затем либо занести его в переменную, либо передать или передать результат сообщения о создании напрямую.