0

パーセンテージを入力するテキスト フィールドが 2 つあります。最初のフィールドに 20 を入力すると、2 番目のテキスト フィールドを 60 に更新したいと思います。後で 2 番目のフィールドを 30 に変更すると、最初に 70 に更新されたように。

言いたいことをわかりやすくするために、_firstTotal と _secondTotal というラベルが関連付けられた 2 つのテキスト フィールド _firstPercent と _secondPercent があるとします。

float firstPercent = [_firstPercent.text floatValue];

float firstAmount = (firstSalePercent / 100) * firstOrigonalAmount;

_firstTotal.text = [NSString stringWithFormat:@"%1.0f",firstAmount];



float secondPercent = [_secondPercent.text floatValue];

float secondAmount = (secondSalePercent / 100) * secondOrigonalAmount;

_secondTotal.text = [NSString stringWithFormat:@"%1.0f",secondAmount];

これを処理する方法が本当にわからないので、それぞれのコードの下にこれを追加してみました。最初のものでは機能しますが、2番目のものでは機能しません。

float percentToSecond = 100 - firstPercent;
_secondPercent.text = [NSString stringWithFormat:@"%1.0f", percentToSecond];

float percentToFirst = 100 - secondPercent;
_firstPercent.text = [NSString stringWithFormat:@"%1.0f", percentToFirst];

他の解決策を試しましたが、どうすればよいかわかりません。

誰かが私を正しい方向に導いてくれることを願っています。

ありがとう

4

1 に答える 1

1

デリゲート メソッド controlTextDidEndEditing: を使用して、入力された値を確認し、他のテキスト フィールドの値を設定するのはどうでしょうか。次のコードでは、tf1 と tf2 は 2 つのテキスト フィールドの IBOutlets です。

    -(void)controlTextDidEndEditing:(NSNotification *)obj {
    float value = [[[obj.userInfo valueForKey:@"NSFieldEditor"] string] floatValue];
    if (obj.object == self.tf1) {
        self.tf2.stringValue = [NSString stringWithFormat:@"%1.0f",100. - value];
    }else if (obj.object == self.tf2) {
        self.tf1.stringValue = [NSString stringWithFormat:@"%1.0f",100. - value];
    }
}

ユーザーが 100 より大きい数値または数値以外の数値を入力していないことを確認するために、さらにチェックを行う必要があります。

于 2012-09-14T04:06:07.560 に答える