7

次のコードを使用して、プログラムで NSPopUpButton を作成しました

[myPopUpButton insertItemWithTitle:@"--Select one--" atIndex:0];
[myPopUpButton addItemsWithTitles:[NSArray arrayWithObjects:@"1.One",@"Two",@"Three", nil]];

[myPopUpButton sizeToFit];
[myPopUpButton  setAction:@selector(popUpAction:)];
[fullBrowserView addSubview: myPopUpButton];

//PopUp Action
-(void)popUpAction:(id)sender
{
    NSLog(@"popUpAction");
}

popUpButton をクリックすると、popUpButton のメニュー項目が無効になります。interfacebuilder を使用すると、IBAction で正常に動作します。

この setAction が NSPopUpButton で機能しないのはなぜですか?

4

2 に答える 2

13

メッセージを送信するターゲットオブジェクトを設定していないようです。したがって、コードに次を追加します。

[myPopUpButton setTarget:self];

popUpAction:メソッドが同じクラスにあると仮定します。

Interface Builder を使用している場合は、セレクター アクションをターゲットに接続します。

この呼び出しのドキュメントから:

- (void)setTarget:(id)anObject

anObject はあるnilが、コントロールにまだ有効なアクション メッセージが割り当てられている場合、アプリケーションはメッセージに応答できるオブジェクトを探すレスポンダー チェーンに従います。

あなたの場合、メッセージに応答するオブジェクトはありません。

于 2012-03-07T11:42:44.070 に答える