我現在正在xCode開發3天。上一次我做了UI開發,它是在Windows 3.1中與Petzold書。無論如何,我有我的第一個iOS應用程序啓動和運行,它基本上做我需要的。我有兩個滑塊來選擇色調和飽和度,並且爲了響應它們,我動態地繪製了一堆漸變陰影圓圈。我在Hello World示例和stackoverflow之間運行了很多,包括在CGLayer中緩存漸變(所以感謝所有的stackoverflow人員)。有一件我不太明白,但:如何以編程方式設置UISlider初始值,或者iOS程序如何啓動?
我想將一個滑塊的初始值設置爲1.0,而不是默認的0.5。我知道我可以在IB中做到這一點,但我更願意編寫代碼,我想我會完全放棄IB。我真的不明白它是如何連接的,我想了解代碼。我有這樣的代碼,試圖將其設置:
- (void)viewDidLoad
{
NSLog(@"viewDidLoad");
[super viewDidLoad];
[hue_slider setValue:0.5];
[sat_slider setValue:1.0];
self.led_view.hue_slider_value=0.5;
self.led_view.sat_slider_value=1.0;
// Do any additional setup after loading the view, typically from a nib.
}
sat_slider仍然在中間,而不是在最後(1.0最大值)結束。從stackexchange的閱讀中,我明白我可能在錯誤的時間調用了這個函數,當調用viewDidLoad時滑塊還沒有真正加載,並且我的初始值被IB中指定的值覆蓋。但我沒有看到的是呼叫應該在哪裏進行。所以問題:
凡在我的節目,我應該把
[sat_slider setValue:1.0];
,使其將滑塊的初始值,覆蓋在IB默認?有人可以解釋iOS程序中的事件啓動順序嗎?而關於iOS和Objective C編程的在線或印刷書籍的指針會很棒。
編輯
當我檢查sat_slider的價值是零。那意味着連接丟失了?我將其拖入故事板並創建了一個IBOutlet以及一個動作。
@interface led_testViewController : UIViewController
- (IBAction)saturation_scroll:(id)sender;
- (IBAction)hue_scroll:(id)sender;
@property (retain, nonatomic) IBOutlet UISlider *hue_slider;
@property (retain, nonatomic) IBOutlet UISlider *sat_slider;
@property (strong, nonatomic) IBOutlet led_view *led_view;
@end
您可以在設置值時檢查'sat_slider'是否不爲零?它是否通過IB正確連接? – iDev
在你的'viewDidLoad'方法中拋棄它:'NSLog(@「sat_slider is:%@」,self.sat_slider);' – NJones
類型的主題,但加載視圖和其他對象從筆尖有趣的是瞭解它如何工作和你會明白它是如何設置連接 - 這不是魔術,儘管有一些相反的說法:) –