我收到「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