我有两个相同的功能。它们的唯一区别 - 首先传输UITextField,第二个传输UILabel。
-(void)shakeAnimationField:(UITextField*) textField;
-(void)shakeAnimationLabel:(UILabel*) textField;
我可以转移ID与他一起工作吗?
像-(void)shakeAnimationLabel:(id) textField;
一样
我试过了,但刚收到错误
在'const __strong id'
类型的对象上找不到属性'transform'
我该如何解决这个问题?
答案 0 :(得分:2)
Dot语法不适用于id
。点语法要求将对象强类型化为类。
所以,而不是:
textField.transform = ...;
执行:
[textField setTransform:...];
答案 1 :(得分:1)
您可以使用:
- (void)shakeAnimationForView:(UIView *)view
因为这两个类都是UIView
的子类,它定义了你想要使用的接口。
答案 2 :(得分:1)
在像你这样的情况下,我会做这样的事情:
方法声明:
-(void)shakeAnimationObject:(id) myObject;
方法定义:
-(void)shakeAnimationObject:(id) myObject
{
if ([myObject isKindOfClass:[UITextField class]])
{
//My Custom Code for UITextField
}
else if ([myObject isKindOfClass:[UILabel class]])
{
//My Custom code for UILabel
}
else{
//What if it is something else???
}
}