0

私は 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:

4

1 に答える 1