Как выполнить операции с постоянными переменными, извлеченными из UIButton? - PullRequest
2 голосов
/ 05 февраля 2012

Я создаю приложение для iPhone, которое использует UIButton s с текстом Placeholder для добавления и вычитания предопределенных постоянных значений; то есть, если есть 3 кнопки с названиями A, B и C, каждая из которых имеет числовые значения, связанные с ними, мне нужен самый простой способ получить значения кнопок (который явно не отображается на каждой кнопке). ) и сложите их вместе. Поэтому, если A = x и B = y, а пользователь нажимает кнопки A и B, а затем нажимает кнопку ввода или вычисления, значение A + B (x + y) будет вычислено и отображено. Мой текущий план состоит в том, чтобы использовать NSArray и добавлять к нему значения A и B, но, как всегда, приветствуется второе мнение. Надеюсь, это объяснение было достаточно простым и легким для понимания. Мне нужно это, чтобы иметь возможность добавить (теоретически) бесконечное количество переменных. Т.е.: A и B несколько раз, но также C, D, E ... и т. Д. Это главная причина, почему я рассматривал NSArray.

Ответы [ 3 ]

1 голос
/ 05 февраля 2012

Поместите нужные значения в свойство тега каждой кнопки.

1 голос
/ 05 февраля 2012

Вы можете создать подкласс UIButton, который содержит некоторые данные, связанные с ним.Либо вы можете установить теги своих кнопок и использовать теги, поскольку индексы берут данные из NSArray.

0 голосов
/ 05 февраля 2012

Всегда будет два и только два числа, которые нужно добавить?Если это так, NSArray кажется излишним.Учтите, что NSArray является указателем, и каждый объект, который хранится в массиве, будет указателем.Это будет n + 1 указатель или 3 указателя при добавлении 2 чисел.Почему бы не использовать целое число (или число с плавающей запятой, или любой другой подходящий тип) для хранения итога, и другое целое число для хранения текущего состояния поведения кнопки?

Предположим, вы используете класс контроллера для представлениясодержащий ваши три кнопки.Каждая из кнопок имеет соответствующее действие в методе контроллера.Эти две переменные NSUInteger, наряду с BOOL для отслеживания того, будут ли добавлены числа, могут быть объявлены в вашем классе контроллера:

 NSUInteger total;
 NSUInteger buttonsPressed;
 BOOL adding;

Когда никакие кнопки не были нажаты, buttonPressed, очевидно, будет равен нулю.Когда первая кнопка нажата, вы должны сделать что-то вроде этого:

  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;
  }
...