2

NSPopupButtons を含む 1 つの行を持つビュー ベースのテーブル ビューがあります。ユーザーが popUpButton を変更すると、この popUpButton が含まれているテーブル行を取得する必要があります。

私は最初に行を取得することを期待していました

NSInteger clickedRow = [tableView rowForView: ((NSPopUpButton*) sender)];

ただし、アクションの送信者は常にNSMenuItemオブジェクトではなくNSPopUpButton. NSMenuItemただし、ビューではないため、使用できませんrowForView

現在、私の IBAction は次のようになっています。

- (IBAction)changedPopUp:(id)sender {
    NSMenuItem* selectedMenuItem = ((NSMenuItem*) sender);
    NSPopUpButton* popupButton = (NSPopUpButton*)[selectedMenuItem view];
    NSInteger clickedRow = [tableView rowForView:popupButton];
    //[...]
}

しかし、ビュー プロパティは自動的に設定されないため、NSMenuItem ごとに手動で設定するのは非常に不便です。

テーブル行を取得する簡単な方法はありませんか?

4

1 に答える 1

1

ごとにアクションとターゲットを設定しないでくださいNSMenuItem。代わりにアクションとターゲットを設定しNSPopupButtonます。次に、インスタンスsenderになり、NSPopupButton使用できますrowForView

もちろん、欠点は、メニュー項目ごとに異なるアクションを設定できないことです。

于 2016-08-18T11:01:05.760 に答える