在方法中等待按钮按

时间:2014-08-26 01:35:32

标签: ios objective-c button

我正在开发一个计算器应用程序,并希望添加10个用户可以存储号码的存储寄存器。计算器的故事板上有一个" STO"用户想要存储条目时按下的按钮。按下的下一个数字按钮(按钮0,按钮1 ...按钮9)将表示存储该条目的寄存器。

该应用程序当前包含方法" STOButtonPressed":

 - (IBAction)STOButtonPressed:(UIButton *)sender{

    STOButtonPressed = YES;

    }

我有一种方法可以在计算器中输入数字,称为digitPressed:

  - (IBAction)digitPressed:(UIButton *)sender{

            NSString* digit = sender.currentTitle;
            [_audioPlayer play];

            if(!(self.dotNotation && [digit isEqualToString:@"."])){

                if([digit isEqualToString:@"."])
                    self.dotNotation=YES;

                if(self.userIsInTheMiddleOfTyping){
                    self.displayLabel.text = [self.displayLabel.text stringByAppendingString:digit];

                }
                else
                {
                    self.displayLabel.text = digit;
                    self.userIsInTheMiddleOfTyping = YES;
                }
            }

    }

故事板中计算器上的每个数字按钮都被标记(按钮" 0"是标记" 0",按钮" 1"是标记" 1"等...)。

按下" STO"按钮,我希望下一个按钮(0到9)条目成为存储寄存器编号。我想在STOButtonPressed方法中设置存储寄存器编号。不确定是否可能,或者如果可能的话。我目前有几个" IF语句"用于确定存储寄存器号的digitPressed方法(此处未示出)。但这似乎非常麻烦,而且方法变得非常混乱。我想在STOButtonPressed方法中保留存储功能的所有代码。多年来我一直没有成功地工作,感觉我错过了什么。有人可以告诉我如何在STOButtonPressed方法中设置存储寄存器号,如果可能的话?

我正在使用Xcode 5。

1 个答案:

答案 0 :(得分:0)

如果你已经正确设置了按钮的标签,那应该非常简单:

在您的媒体资源中,添加:

   @property (nonatomic, assign) BOOL hasPressedSTOButton;

并更改此内容,因为您不希望在var和方法名称之间产生混淆:

- (IBAction)STOButtonPressed:(UIButton *)sender{

        self.hasPressedSTOButton = YES;

    }

并将您的代码更改为1-10而不是0-9,因为您要确保选中的是非零代码的按钮,而不是其他按钮。

然后像这样更改你的digitPressed

  - (IBAction)digitPressed:(UIButton *)sender{

            NSString* digit = sender.currentTitle;
            [_audioPlayer play];

            if(!(self.dotNotation && [digit isEqualToString:@"."])){

                if([digit isEqualToString:@"."])
                    self.dotNotation=YES;

                if(self.userIsInTheMiddleOfTyping){
                    self.displayLabel.text = [self.displayLabel.text stringByAppendingString:digit];

                }
                else
                {
                    self.displayLabel.text = digit;
                    self.userIsInTheMiddleOfTyping = YES;
                }
            } else if (sender.tag != 0) {
                //store your stuff here.  Tags range from 1 to 10.  Use sender.tag - 1 if you want the values to range from 0 to 9.    
            }

    }