Я работаю над маленькой программой калькулятора и пытаюсь добавить переменную кнопку. Что я хотел бы сделать, так это то, что если пользователь нажимает кнопку переменной, я бы хотел автоматически умножить эту переменную на число, набранное ранее. У меня есть метод:
- (IBAction)operationPressed:(UIButton *)sender
и у меня есть кнопка с символом *. Теперь внутри переменной нажата метод
- (IBAction)variablePressed:(UIButton *)sender
Я хотел бы смоделировать нажатие кнопки времени (*). Итак, у меня есть следующий код, например
- (IBAction)variablePressed:(UIButton *)sender{
if (self.userIsInTheMiddleOfEnteringANumber) {
[self operationPressed:<how to simulate pressing *???>];
}
Заранее спасибо
ОБНОВЛЕНИЕ после комментариев
Это калькулятор RPN, поэтому вы можете поместить его в список чисел в виде стека, а затем нажимать кнопки управления, и он будет выполнять операции со стеком сверху вниз. ОперацияПрессованный метод:
- (IBAction)operationPressed:(UIButton *)sender
{
if (self.userIsInTheMiddleOfEnteringANumber) [self enterPressed];
double result = [self.brain performOperation:sender.currentTitle];
self.display.text = [NSString stringWithFormat:@"%g", result];
self.history.text = [self.history.text stringByAppendingString:sender.currentTitle];
}
поэтому, когда операция нажата, она отправляется методу executeOperation, который затем решает, какую операцию выполнить. Мое решение (включая добавление некоторых значений переменных для тестирования) следующее:
- (IBAction)variablePressed:(UIButton *)sender
{
NSString * variable = sender.currentTitle;
NSDictionary *testDictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"4",@"x",@"10",@"y",@"2",@"z", nil];
if (self.userIsInTheMiddleOfEnteringANumber) {
[self enterPressed];
}
id numberForVariable = [testDictionary objectForKey:variable];
[self.brain pushOperand:[numberForVariable doubleValue]];
self.userIsInTheMiddleOfEnteringANumber = NO;
self.history.text = [self.history.text stringByAppendingString:variable];
//this is working pretty good. Now i need to make sure it works when i run program given values for variables.
}