如何对从UIButton获取的常量变量执行操作?

时间:2012-02-05 09:15:23

标签: objective-c ios uibutton nsarray

我正在创建一个iPhone应用程序,它使用带有占位符文本的UIButton来添加和减去预定义的常量值;也就是说,如果有3个标题为A,B和C的按钮,每个按钮都有与之关联的数值,我需要采用最简单的方法来获取按钮的值(不是每个按钮上都明确显示的) )并将它们加在一起。因此,如果A = x且B = y,并且用户按下按钮A和B,然后按下输入或计算按钮,则将计算并显示A + B(x + y)的值。我目前的计划是使用NSArray,并将A和B的值附加到其上,但一如既往,欢迎第二种意见。希望这个解释很简单,易于理解。我需要这个能够添加(理论上)无数个变量。即:A和B多次,但也有C,D,E ......等。这是我考虑NSArray的主要原因。

3 个答案:

答案 0 :(得分:1)

将所需的值放在每个按钮的tag属性中。

答案 1 :(得分:1)

您可以创建一个包含与之关联的数据的UIButton子类。您可以设置按钮的标签,并使用标签作为索引从NSArray中获取数据。

答案 2 :(得分:0)

是否总会有两个且只有两个数字要添加?如果是这样,NSArray似乎有点矫枉过正。考虑NSArray是一个指针,数组存储的每个对象都是一个指针。那将是n + 1个指针,或者在添加2个数字时指向3个指针。为什么不使用整数(或浮点数,或任何适合的类型)来存储总数,另一个整数来存储按钮行为的当前状态?

假设您正在为包含三个按钮的视图使用控制器类。每个按钮在控制器方法中具有相关联的动作。可以在控制器类中声明这两个NSUInteger变量以及用于跟踪是否添加数字的BOOL:

 NSUInteger total;
 NSUInteger buttonsPressed;
 BOOL adding;

当没有按下任何按钮时,buttonsPressed显然等于零。按下第一个按钮时,您将执行以下操作:

  if (buttonsPressed == 0) {
      total += [[pressedButton text] intValue];
  } else {
      if (adding) {
          total += [[pressedButton text] intValue];
      } else {
          total -= [[pressedButton text] intValue];
      }
  }
  buttonsPressed++;
  if (buttonsPressed == 2) {
      // display answer and reset variables
      [answerField setText:@"%d", total];
      total = 0;
      buttonsPressed = 0;
  }