1

2 つの NSTextfield があり、それぞれに同じメソッドを使用したいと考えています。

-(void)controlTextDidChange: (id)sender {
[label setStringValue:[textfield stringValue]];
}

label/textfieldどの NSTextField がメッセージを送信するかに応じて、別のカップルを使用したいと思います。この情報はsenderオブジェクトで利用できますか、それとも新しいデリゲートを作成する必要がありますか?

4

2 に答える 2

2

[sender object]はあなたのものなtextfieldので、簡単に入手stringValueできます。ただし、関連付けられたラベルを取得することはできません。それを見つけるには、独自のスキームを構築する必要があります。

1 つの方法は、テキスト フィールドのtagプロパティを異なる数値に設定してマークすることです。最初のラベルのテキスト フィールドのタグを 1 に設定し、2 番目のラベルのテキスト フィールドのタグを 2 に設定すると、次のようなことができます。

-(void)controlTextDidChange: (id)sender {
    NSTextField *textfield = [sender object];
    NSLabel *label = nil;
    switch ([textfield tag]) {
    case 1: label = myLabelOne; break;
    case 2: label = myLabelTwo; break;
    }
    [label setStringValue:[textfield stringValue]];
}
于 2012-07-19T11:04:56.863 に答える
1

これが私がそれを解決した方法です:

-(void)controlTextDidChange: (id)sender {
    [[[window contentView]
    viewWithTag:( [[sender object] tag] + 100 )]
    setStringValue:[ [sender object] stringValue]];

インターフェイス ビルダーで、ラベルのタグを 100 + 関連する NSTextField のタグの値に設定しました。IBOutlet も必要ありません。

于 2012-07-19T11:56:27.467 に答える