在另一种方法中调用方法?

时间:2012-12-22 18:41:59

标签: iphone

我有一个委托方法,其中只有一些代码,在输入的数字的末尾加上%符号。

- (void)textFieldDidEndEditing:(UITextField *)UItextfield {
     NSString *oldTextFieldValue = UItextfield.text;
     UItextfield.text = [NSString stringWithFormat:@"%@ %%",oldTextFieldValue];
   }

我可以代替那样做,采取以下行动

-(IBAction)Calculate:(UITextField *)UITextfield;
{
    NSString *oldTextFieldValue = UItextfield.text;
    UItextfield.text = [NSString stringWithFormat:@"%@ %%",oldTextFieldValue];
}

然后在Delegate函数中调用该动作?像

这样的东西
-(void)textFieldDidEndEditing:(UITextField *)UItextfield {
[self Calculate:self]
}

我试过了,它不起作用。我知道它会让我得到相同的结果,但我只是想知道它是否可以完成。我想我可以问一个方法(Calculate)可以在另一个方法(textFieldDidEndEditing)中调用以及如何调用。

2 个答案:

答案 0 :(得分:4)

您提供self作为方法参数,它是您所在类的实例。在这种情况下,由于方法参数应该是UITextField的实例,因此错误。在您的方法中尝试使用[self Calculate:UItextfield]

答案 1 :(得分:2)

在大多数编程语言中,始终从方法中调用其他方法。 这是一种很好的方法,可以在不同的地方拆分代码并重用代码,而无需复制/粘贴。

(这对你来说可能太基本了。对不起,那个)

如果您也使用标准命名约定,那么事情可能会更容易理解。 ('likeThis'表示变量和方法名称;'LikeThis'表示类名称)

- (void)textFieldDidEndEditing:(UITextField *)textField {
     NSString *oldTextFieldValue = textField.text;
     textField.text = [NSString stringWithFormat:@"%@ %%",oldTextFieldValue];
}

textField这里是指向刚完成编辑的UITextField对象的指针。 您希望将此对象传递给新的“其他”方法。

[self calculate:textField];

self是指向当前类实例的指针。例如,在名为“MyViewController”的UIViewController子类中,self引用此类的当前实例。 由于-calculate方法是一种实例方法(以“ - ”开头),因此需要使用self。变量textField在冒号后传递。

- (void)calculate: (UITextField*)textField {
NSString *oldTextFieldValue = textField.text;
textField.text = [NSString stringWithFormat:@"%@ %%",oldTextFieldValue];

}

如果希望从xib或情节提要中的UIComponent调用方法,请仅使用IBAction关键字。