2013-07-26 3 views
0

Я работаю над приложением Mac и занимаюсь NSTableView, чтобы показать список воспроизведения. Пользователи могут добавлять песни в таблицу (или удалять). Он поддерживает операции отмены/повтора.Как сделать несколько строк выбора после вставки NSTableVeiw

Вот часть моего кода:

// MyDocument.m 

- (void)insertObject:(URSoundTrack *)object inSoundTracksAtIndex:(NSUInteger)index{ 

    [[self.undoManager prepareWithInvocationTarget:self] removeObjectFromSoundTracksAtIndex:index]; 
    [self.undoManager setActionName:@"Add sound track"]; 

    [self.soundTracks insertObject:object atIndex:index]; 
} 

- (void)removeObjectFromSoundTracksAtIndex:(NSUInteger)index{ 
    URSoundTrack *soundTrack = [self.soundTracks objectAtIndex:index]; 

    [[self.undoManager prepareWithInvocationTarget:self] insertObject:soundTrack inSoundTracksAtIndex:index]; 
    [self.undoManager setActionName:@"Remove sound track"]; 

    [self.soundTracks removeObjectAtIndex:index]; 
} 

Эти два метода являются антагонистами для отмены/повтора, и она прекрасно работает.

Но я хочу, чтобы представление таблицы выбирало только что добавленные строки после вставки. Он также должен работать при отмене удаления или повторной вставке (для вставки объектов).

Я пробовал несколько способов, но они не работали. Я хочу знать, как заставить представление таблицы выбирать эти строки после вставки (даже при отмене/повторном вводе строк)?

==== Обновление ====

Там может быть более чем один объект, который будет вставлен в ходе одной операции, даже если погубит или переделка, в мое приложение. Мне нужно выбрать все те строки, которые были только что вставлены. Я попробовал метод –selectRowIndexes:byExtendingSelection: с моим методом вставки, но будет работать только один выбор в первом вызванном методе вставки.

Я не знаю, как сделать множественный выбор после вставки некоторых объектов в мой метод –insertObject:inSoundTracksAtIndex:.

ответ

0

NSTableView дает хороший API для выбора строк:

selectRowIndexes:byExtendingSelection:

Вы знаете, какие строки были вставлены, просто проходят вдоль множества индексов из них (с параметром «byExtendingSelection:» из «NO» , если вы хотите создать совершенно новый выбор), и все будет прекрасно.

+0

Спасибо за ваш комментарий. Раньше я пытался. Но мне нужно сделать множественный выбор в моем методе вставки, и я не знаю, как это сделать. –

+0

Я пробовал '-selectRowIndexes: byExtendingSelection:' в моем методе вставки, но этот метод выбора будет работать только один раз при первом вызове множественной вставки внутри одной операции в том же цикле запуска. Как я могу сделать множественный выбор после нескольких вставок? –

+0

вы можете * расширить * выбор (т. Е. Сделать несколько выборов), изменив этот последний параметр, «byExtendingSelection:' », на« YES ». –

 Смежные вопросы

  • Нет связанных вопросов^_^