-2

私のiPhoneアプリでは、viewDidLoadにwhileループがあります。ビューに4つのボタンがあります。

4つのボタンのいずれかが押された場合に繰り返し処理するwhileループを作成したいと思います。

まあ言ってみれば;

int k = 0;
while (k<4){

     if (// one of the buttons is pressed...){
         k++;
     }

}

助けてくれてありがとう。

編集:私はこれを試しましたが、機能しませんでした:

 int k = 0;
    while (k<4){

         if ([self.answerButton_1 isSelected]){
             k++;
         }

    }
4

2 に答える 2

3

問題は、メソッドviewDidLoadは、アプリの起動時に1回だけ呼び出されるが、後で誰かがボタンを押したときに何かを実行したいということです。

ボタンが押されたときにメソッドを呼び出す必要があります。だからあなたはいくつかのことをする必要があります

1)ヘッダーに、変数kを追加して、すべての関数で使用できるようにする必要があります。

int k;

2)viewDidLoadにボタンを作成します。

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self 
      action:@selector(someoneTouchedYourButton)
             forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"add to k" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[self.view addSubview:button];

3)kの初期値を設定します。viewDidLoadでOKになります

k = 0;

3)誰かがボタンを押したときに呼び出される関数を作成します。

-(void) someoneTouchedYourButton
{
    k ++;
    NSLog(@"someone pressed the button. k is now %d",k);
}

4)kを最大4に制限したいようです。そのため、someoneTouchedYourButtonセクションに何かを追加して4に制限します。

if(k > 4)
{
     k = 4;
}
于 2012-08-17T09:31:54.273 に答える
0

それはそれを行うための奇妙な方法です。whileループはメインスレッドをブロックし、UI入力を取得できなくなります。IBActionを使用し、Interface Builderを介して(またはプログラムで)ボタンを接続し、各ボタンにタグを使用する必要があります。

-(IBAction)buttonPressed:(id) sender {
        UIButton *button = (UIButton *)sender;
        int tag = [button tag];
        //Do what you need to depending on "tag"
}
于 2012-08-17T09:31:10.337 に答える