我有一个委托方法,其中只有一些代码,在输入的数字的末尾加上%符号。
- (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)中调用以及如何调用。
答案 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
关键字。