2

プログラムで作成されたビューをいつ/どこで作成して初期化するかという質問があったので、ここでの議論がこのトピックにもっと光を当てることを願っています.

このスライド: ここに画像の説明を入力

「 viewDidLoadのビューのジオメトリに基づいて何かを初期化しないでください」と述べ、 viewDidAppear.

私のView Controllerにビューがあると想像してください。10 個の動的 UIButton を追加したいと考えています。viewDidAppearに以下のようなコードを入れましょうか?

-(void) viewDidAppear:(BOOL)animated
{
    ...
    UIButton *button1 = [[UIButton alloc] initWithFrame: rect1];
    [self.view addSubview: button1];
    UIButton *button2 = [[UIButton alloc] initWithFrame: rect2];
    [self.view addSubview: button2];
    ...
}

ただし、これにより、ビューが表示されるたびにボタンが作成されます。それは私たちが望むものですか?一方、コードをviewDidLoadスライドに入れる場合は、これらのビューのジオメトリをそこで初期化しないことをお勧めします。

それとも でボタンを作成しviewDidLoad、そのフレームを で設定しviewDidAppearますか?

普段はどのようなアプローチをとっていますか?

4

3 に答える 3

0

But this creates the buttons each time the view is shown. それは本当です。

したがって、できる最善のことは、ブール値を追加することです (名前を付けましょうisLaunched)。FALSEメソッドで設定します-(void)viewDidLoad

次に、ボタン(またはその他のもの)の作成を実行ifする場所に条件を追加し、最後にブール値を true に設定します。-(void)viewDidAppear

あなたはそのようなものを持っている必要があります:

-(void)viewDidLoad
{
    //some settings
    isLaunched = FALSE;
}

-(void)viewDidAppear:(BOOL)animated
{
    if(!isLaunched)
    {
        //creating and adding buttons
        isLaunched = TRUE;
    }
}
于 2013-08-21T12:27:51.663 に答える