我现在正在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
类型的主题,但加载视图和其他对象从笔尖有趣的是了解它如何工作和你会明白它是如何设置连接 - 这不是魔术,尽管有一些相反的说法:) –