-2

在我的 iPhone 应用程序中,我在 viewDidLoad 中有一个 while 循环。我的视图中有四个按钮。

如果按下四个按钮之一,我想让 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)在标题中,您需要添加变量 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 并通过界面构建​​器(或以编程方式)连接按钮,并为每个按钮使用标签。

-(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 回答