16

右クリックされた行インデックスを取得する方法を探してNSTableViewいますが、デリゲート メソッドまたはクラス属性が見つかりません。どんな提案でも大歓迎です。

4

5 に答える 5

23

NSTableViewメソッドを使用して- (NSInteger)clickedRow、最後にクリックされた行のインデックスを取得します。返される NSInteger は、右クリックされた行のインデックスになります。

NSTableViewこのソリューションをサブクラス化する必要はありません。clickedRowも利用できますNSOutlineView

于 2013-02-07T15:42:55.583 に答える
11

私はこれを行っていませんが、NSViewのをオーバーライドすることでできると確信しています- (NSMenu*)menuForEvent:(NSEvent*)theEventこのリンクの例では、ポイント変換を行ってインデックスを決定しています。

-(NSMenu*)menuForEvent:(NSEvent*)theEvent
{
    NSPoint mousePoint = [self convertPoint:[theEvent locationInWindow] fromView:nil];
   int row = [self rowAtPoint:mousePoint];
   // Produce the menu here or perform an action like selection of the row.
}
于 2012-09-19T12:37:26.940 に答える
3

サブクラスに実装menuForEvent:して、右クリックで行を選択するだけです:NSTableView

@implementation MyTableView

- (NSMenu *)menuForEvent:(NSEvent *)theEvent
{
    int row = [self rowAtPoint:[self convertPoint:theEvent.locationInWindow fromView:nil]];
    if (row == -1) 
        return nil;
    if (row != self.selectedRow)
        [self selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
    return self.menu;
}

@end
于 2015-07-22T11:06:14.013 に答える