模拟在iphone中的方法调用中按下按钮

模拟在iphone中的方法调用中按下按钮,iphone,objective-c,xcode,Iphone,Objective C,Xcode,我正在编写一个小型计算器程序,我正在尝试添加一个变量按钮。我想做的是,如果用户按下变量按钮,我想自动将这个变量乘以之前键入的任何数字。我的方法是: - (IBAction)operationPressed:(UIButton *)sender 我有一个带*符号的按钮。现在,在variable pressed方法中 - (IBAction)variablePressed:(UIButton *)sender 我想模拟按下时间按钮(*)。例如,我有下面的代码 - (IBAction)variab

我正在编写一个小型计算器程序,我正在尝试添加一个变量按钮。我想做的是,如果用户按下变量按钮,我想自动将这个变量乘以之前键入的任何数字。我的方法是:

- (IBAction)operationPressed:(UIButton *)sender
我有一个带*符号的按钮。现在,在variable pressed方法中

- (IBAction)variablePressed:(UIButton *)sender
我想模拟按下时间按钮(*)。例如,我有下面的代码

- (IBAction)variablePressed:(UIButton *)sender{
if (self.userIsInTheMiddleOfEnteringANumber) {
    [self operationPressed:<how to simulate pressing *???>];
}
因此,当按下一个操作时,它会被发送到performOperation方法,然后该方法决定执行哪个操作。我的解决方案(包括为测试输入一些变量值)如下:

- (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.

}

尝试以下操作:
[按钮发送操作控制事件:UIControlEventTouchUpInside];
其中
按钮
指的是您的“时间按钮”。

因此
操作按下
消息检查发送方是什么来决定执行什么操作?我认为这可能不是一个好的设计

但是,您可以看看
operationPressed
的实现,看看如果按钮是
*
按钮,它会做什么吗?您不应该调用
operationPressed
而应该只执行
operationPressed
在您想要的情况下所做的操作


或者,如果你想沿着这条路走,只要找到正确的按钮,
operationPressed
必须有一种方法来访问按钮进行比较,对吗?你应该能够以同样的方式访问你需要的按钮。

假设operationPressed需要一个UIButton,你不能简单地说

 [self operationPressed:sender];
这就是你能做到的 只需创建*(星形)按钮的对象,然后在变量中按Method

IBOutlet UIButton *starBtn_Obj;

- (IBAction)variablePressed:(UIButton *)sender{
if (self.userIsInTheMiddleOfEnteringANumber) {
[self operationPressed:starBtn_Obj];
}

这将像按下*(星形按钮)一样执行操作按下方法。

好的,我会尝试,但我不确定如何描述我的“时间”方法中的按钮。一种方法是使用UIButton的属性。hmmmmm,你能详细说明一下吗?我对objective C有点初学者,所以我对属性不是100%精通。我尝试了另一种方法,但我仍然有兴趣找到如何做的方法,因为我发现这可能很有用r、 你真的应该模拟按下按钮,还是让变量按钮在模型对象上执行与“时间”按钮执行乘法相同的操作更好?是的,这就是我所想的。问题是我不知道如何将正确的参数传递给方法。operationPressed方法的作用是参数一个UIButton,但我不确定如何将该参数传递到代码中的方法。发布更多代码。显示
运算符压缩的实现只需将nil作为发送方值传递。或者创建另一个没有发送方参数的方法,并让您的button方法调用该方法。我读取它的方式
operationPressed
用于所有按钮,它根据您传递的UIButton对象决定要执行的操作。因此,如果您只发送
发送者
,它将不会执行与按下
*
按钮时相同的操作。不,不会,因为它传递了不同的对象,这需要在代码中得到满足。我添加了更多的代码作为r我能解决它,但不确定这是否是最好的方法。
IBOutlet UIButton *starBtn_Obj;

- (IBAction)variablePressed:(UIButton *)sender{
if (self.userIsInTheMiddleOfEnteringANumber) {
[self operationPressed:starBtn_Obj];
}