1

スライダーで指定された値を表示するために、NSSliderをテキストフィールドにバインドしています。すべてが機能しますが、NSSliderが「nil」をminValueとしてオブジェクトに送信するようにします。

たとえば、(プロパティリストに)保存するときにnilに変換できます。

if ([myOb intValue] > 0)
    [myDict setObject:... forKey:...]

ただし、アプリの実行時に同じ動作を適用したいので、「myObj」の値がnilの場合にのみ、他のいくつかのフィールドが有効になります(バインディングあり)。問題は、NSSliderが常に「0」を返し、minValue=nilがNSSliderによって受け入れられないことです。

よろしくお願いします、ロナン。

4

2 に答える 2

6

nilとしては受け付けませんminValueNSSliderドキュメントを見ると、その理由は、minValueとが両方ともオブジェクトタイプではないsmaxValueとして定義されているためです。double

テキストフィールドに表示される値をカスタマイズする場合は、値をテキストフィールドの値に変換するサブクラスを作成することをお勧めしNSValueTransformerます。これを行う方法の詳細については、ValueTransformerプログラミングガイドをお読みください。私は過去にこれを行ったので、システム環境設定のスクリーンセーバースライダーに似た時間値を表示するラベルを付けることができます。これは非常にうまく機能します。doubleNSString

于 2009-10-01T13:44:23.283 に答える
-1

最後に、スライダーをIBActionに関連付けることで、問題を解決しました。

- (IBAction)slideValue:(id)sender {
    if ([mySlide intValue]==0) { //slider
        [myNumBox setStringValue:@""]; //textfield
        [myValue setValue:nil]; // value
    }
}

したがって、スライダーがOに等しい場合、テキストフィールドに「」が返されます(nilは機能しません)。

于 2009-10-05T14:02:32.313 に答える