私は Mac アプリに取り組んでおり、プレイリストを表示するために NSTableView を扱っています。ユーザーはテーブルに曲を追加 (または削除) できます。元に戻す/やり直し操作をサポートしています。
これが私のコードの一部です:
// 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];
}
これらの 2 つの方法は、元に戻す/やり直しに対して拮抗的であり、完全に機能します。
しかし、挿入後に追加したばかりの行をテーブルビューに選択させたいと思います。また、削除を元に戻したり、挿入をやり直したり (オブジェクトを挿入するため) する場合にも機能するはずです。
いくつかの方法を試しましたが、うまくいきませんでした。挿入後にテーブル ビューでこれらの行を選択する方法を知りたいです (行を挿入するために元に戻す/やり直す場合でも)。
==== 更新 ====
アプリで元に戻したりやり直したりしても、1 回の操作で複数のオブジェクトが挿入される可能性があります。挿入したばかりの行をすべて選択する必要があります。挿入メソッドでメソッドを試し–selectRowIndexes:byExtendingSelection:
ましたが、最初に呼び出された挿入メソッドの 1 つの選択しか機能しませんでした。
メソッド内にいくつかのオブジェクトを挿入した後、複数選択を行う方法がわかりません–insertObject:inSoundTracksAtIndex:
。