我有一个接受发件人并使用 UI 按钮调用的方法。如何将该对象转换为 UIImageView ?基本上我如何重用按钮的代码。
- (IBAction)startClick:(id)sender {
button.animationImages = [NSArray arrayWithObjects:
[UIImage imageNamed:@"Pic_1.png"],
[UIImage imageNamed:@"Pic_2.png"],
[UIImage imageNamed:@"Pic_3.png"],
nil];
[button setAnimationRepeatCount:1];
button.animationDuration = 1;
[button startAnimating];
}
最佳答案
我的第一 react 是这样做可能是一个错误。 UIButton
和 UIImageView
是 UIView
的不同子类(UIButton
是 UIControl
的子类),因此它们唯一的共同点是 UIView
方法。如果 sender
确实是一个 UIButton
,将其视为 UIImageView
可能会导致错误,例如“无法识别的选择器发送到实例”和之类的。
一般来说,更简洁的解决方案是创建一个单独的方法,该方法是 UIImageView
的操作。 (与 Java 不同,Objective-C 和 Cocoa 不喜欢根据事件类型将 UI 响应代码硬塞到单个方法中,而是根据需要发生的操作逻辑地组织代码。)
如果您必须从按钮和 ImageView 中调用此方法,您可以像这样分离逻辑:
- (IBAction) startClick:(id)sender {
if ([sender isKindOfClass:UIButton]) {
...
}
else if ([sender isKindOfClass:UIImageView]) {
...
}
}
关于iphone - 转换发送方参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089752/