3

我已经在 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
4

3 回答 3

0

您可以将代码放入- (void)viewWillAppear:(BOOL)animated;

于 2012-11-21T05:50:17.827 回答
0

检查是否sat_slider为零。还要确保它在 IB 中正确连接。如果没有,请将其删除并在 nib/storyboard 中再次添加。那应该可以解决问题。

于 2013-01-18T03:04:37.100 回答
0

我按照 ABC 和 NJones 的建议检查了 sat_slider,结果为零。ViewController.h 文件中有 sat_slider 和 hue_slider 的属性,但仍然缺少某些内容。我删除了属性,在 IB 中重新拖动它们,然后我能够毫无问题地在 viewDidLoad 中设置滑块位置。

于 2012-11-21T18:06:52.107 回答