0

NSComboBox1つと2つののアクションとして次のメソッドを設定していますNSTextField

- (IBAction)valueChanged:(id)sender
{
    if (sender == comboBox) {
        [myModel setFoo1:[comboBox intValue]];
    } else if (sender == intTextField) {
        [myModel setFoo2:[intTextField intValue]];
    } else if (sender == floatTextField) {
        [myModel setFoo3:[floatTextField floatValue]];
    }
}

保守性を高めるために、その方法をこのようなものにできるかどうか疑問に思いました。

- (IBAction)valueChanged:(id)sender
{
    [myModel setValue:[sender value] forKey:[sender identifier]];
}

残念ながら、そのようには機能しません。次のエラーが発生します。

[NSComboBox value]: unrecognized selector sent to instance 0x7fed42029430

コントロールから値を均一な方法で(つまり、オブジェクトとして)取得するにはどうすればよいですintfloat?モデルで使用するKVCメソッドは、値オブジェクトの実際のタイプ(つまりこの場合の種類)をうまくsetValue:forKey:推測できるはずですよね?NSNumber

それとも、これはまったく不可能ですか?(おそらくバインディングを使用してUIコントロールをモデルの値フィールドにバインドできることはわかっていますが、それは私がやりたいことではありません。)

4

1 に答える 1

1

NSTextFieldとは両方ともNSComboBoxのサブクラスであるため、を使用してコントロールの値(または選択した値)を統一的に取得NSControlできるはずです。-(id)objectValue

于 2012-06-10T02:35:53.153 に答える