3

私はちょうど3日間xCodeで開発しています。最後に UI 開発を行ったのは Windows 3.1 で Petzold の本を使用したときでした。それにもかかわらず、私は最初の iOS アプリを起動して実行しており、基本的に必要なことを実行しています。色相と彩度を選択する 2 つのスライダーがあり、それらに応じてグラデーション シェーディングの円を動的に描画します。Hello World の例と stackoverflow の間で、CGLayer での勾配のキャッシュを含め、多くのことを実行しました (すべての stackoverflow 関係者に感謝します)。しかし、私が完全に正しく理解できない小さな部分が1つあります。

1 つのスライダーの初期値をデフォルトの 0.5 ではなく 1.0 に設定したいと考えています。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

ABC と NJones の提案に従って sat_slider をチェックしましたが、ゼロでした。ViewController.h ファイルには sat_slider と hue_slider の両方のプロパティがありましたが、まだ不足しているものがあります。プロパティを削除し、IB で再度ドラッグすると、viewDidLoad でスライダーの位置を問題なく設定できました。

于 2012-11-21T18:06:52.107 に答える
0

sat_slidernilかどうかを確認します。また、IB で正しく接続されていることを確認してください。そうでない場合は、削除してペン先/ストーリーボードに再度追加します。これで問題は解決するはずです。

于 2013-01-18T03:04:37.100 に答える