1

私はObjective-Cに比較的慣れていないので、これは本当に簡単かもしれません.アプリケーションに弾薬数を表示するテキストボックスがあるので、ユーザーが発射ボタンをタップするたびにテキストボックスの数字が下がります. 1 (12 > 11 > 10 など) ずつ 0 にします。 for ステートメントと if ステートメントを使用しようとしましたが、機能しません (間違った構文を使用した可能性があります)。これは私が現在使用しているものですが、明らかに必要です

- (IBAction)fire {

    [ammoField setText:@"11"];

}

- (IBAction)reload {

    [ammoField setText: @"12"];

}
4

4 に答える 4

1

最も簡単な方法は、テキストを数値に変換し、デクリメントしてテキストをリセットすることです。つまり、fire メソッドのコードを次のように置き換えます。

NSInteger ammoCount = [ammoField.text integerValue];
ammoCount--;
ammoField.text = [NSString stringWithFormat:@"%d", ammoCount];

しかし、これをしないでください。赤ん坊のスティーブ ジョブズが泣くからです。

より良い方法はUIInteger、弾丸の数を追跡するタイプのクラスに新しい変数を追加することです。つまり:

// in interface
NSInteger _ammoCount;

...

// in implementation

- (IBAction)fire {
    _ammoCount--;
    if (_ammoCount <= 0) {
        _ammoCount = 0;
        fireButton.enabled = NO;
    }
    [ammoField setText: [NSString stringWithFormat:@"%d", _ammoCount]];
}

- (IBAction)reload {
    _ammoCount = 12;
    [ammoField setText: [NSString stringWithFormat:@"%d", _ammoCount]];
    fireButton.enabled = YES;
}

reloadああ、 _ammoCount と ammoField が確実に初期化されるように、早い段階で呼び出すことを忘れないでください。

于 2012-08-28T07:11:59.050 に答える
0

インスタンス整数を設定

int x; 

それの設定値

x = 12;

方法を変える

- (IBAction)fire {    
 [ammoField setText:[NSString stringWithFormat:@"%i",x]];
 x--;
}
于 2012-08-28T07:05:02.347 に答える
0

int 変数を使用して viewdidload の count の値を設定する

fire メソッドはカウントを 1 減らします

メソッドをリロードして、値を 12 に戻します

それに応じて値を記録または使用する

于 2012-08-28T08:00:08.910 に答える
-3

これを試して:-

  int i;
 -(void)ViewDidLoad 
{

  i=12;

}
 - (IBAction)fire 
{

  [ammoField setText:[NSString stringWithFormat:@"%d",i]];
  i--;
}

- (IBAction)reload {
i = 12;
[ammoField setText: [NSString stringWithFormat:@"%d", i]];
}

それがあなたのために働くことを願っています。ありがとう :)

于 2012-08-28T07:04:12.597 に答える