我已经在 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 的值时,它是 nil。所以这意味着缺少连接?我将它拖到情节提要中并创建了一个 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