我收到“float pos = [sender value];”的错误...“发件人应该是我在Interface Builder中设置的UISlider。错误:初始化中的类型不兼容? (iPhone,Objective-C)
ButtonViewController.m
- (IBAction)slide: (id)sender {
float pos = [sender value];
loadValue.progress = pos;
}
ButtonViewController.h
@interface Button_Fun4ViewController : UIViewController {
IBOutlet UIProgressView *loadValue;
}
- (IBAction)slide: (id)sender;
感谢。
答案很好,谢谢你,但是将它声明为“id”的意义是什么呢? – Devoted 2009-12-21 05:30:19
这里是一个id的原因是所有的目标/动作方法都需要一个id并返回nil(IBAction是一个宏)。 addTarget:action:forEvents:在UIControl级别定义,因此必须适用于所有UIControls,而不仅仅是UISliders。它来自更长的目标/动作方法历史,所有这些都通过了ID,所以即使投向UIControl也会让有经验的开发人员感到困惑。从技术上讲,你可以输入参数给UISlider,它可能会工作,但它可能会产生比解决更多的惊喜(因为调用仍然不是类型安全的)。 – 2009-12-21 16:11:30