我已经在xCode中开发了3天了。我最后一次进行UI开发是在Windows 3.1中使用Petzold的书。无论如何,我的第一个iOS应用程序启动并运行,它基本上做我需要的。我有两个滑块来选择色调和饱和度,为了响应它们,我动态地绘制了一堆渐变阴影圆圈。我在Hello World示例和stackoverflow之间运行了很多,包括在CGLayer中缓存渐变(所以感谢所有stackoverflow人员)。虽然有一件小件我无法理解:
我想将一个滑块的初始值设置为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
答案 0 :(得分:0)
您可以将代码放在- (void)viewWillAppear:(BOOL)animated;
答案 1 :(得分:0)
我按照ABC和NJones的建议来检查sat_slider,它是零。在ViewController.h文件中有sat_slider和hue_slider的属性,但仍然缺少某些东西。我删除了属性,在IB中重新拖动它们,然后我就可以在viewDidLoad中设置滑块位置而没有任何问题。
答案 2 :(得分:0)
检查sat_slider
是否为零。还要确保它在IB中正确连接。如果没有,请将其删除并在nib / storyboard中再次添加。这应该可以解决问题。