0

あるビューを別のビューに切り替えるプロジェクトがあります。

- (IBAction)onClick:(id)sender
{
ViewControllerSecond * sc=[[ViewControllerSecond alloc]initWithNibName:@"ViewControllerSecond" bundle:nil];
[UIView transitionFromView:self.view toView:sc.view duration:3.0
                   options:UIViewAnimationOptionTransitionFlipFromLeft completion:^(BOOL finished) {

}];
}

ここで 3 秒を使ってポイントを作ります。この 2 番目のビューには、ビュー コントローラーから別のビューを追加する GUI を更新する方法があります。

    -(void)updateGUI
{

    sample=[[ViewControllerSample alloc]initWithNibName:@"ViewControllerSample" bundle:nil];
    sample.view.frame=CGRectOffset(sample.view.frame, 0, 150);
    [self.view addSubview:sample.view];
}

ここで問題があります。これを viewDidLoad 関数から呼び出すと、問題なく動作します。ただし、viewWillAppear 関数から呼び出された場合、ビューは画面の上部に表示され、アニメーションが終了した後にのみその位置にジャンプします。どうすれば修正できますか?

4

3 に答える 3

0

それに対する答えは2つの部分でした:

  1. ビューがロードされたときに更新しますが、これは一度しか発生しないため、コントローラーを再利用するには再度呼び出す必要があります。
  2. isViewLoaded を使用して、ビューがロードされているかどうかを確認します。そうである場合は、update メソッドを呼び出します。
于 2012-11-09T11:33:20.993 に答える
0

お電話くださいupdateGUIviewDidLoadで多くの作業を行わないでくださいviewWillAppearviewWillAppearあまりにも多くの作業を行うと、ビューが表示されなくなります。

于 2012-11-08T11:46:28.313 に答える
0

それをviewDidLoadに入れて何が悪いのですか?

見た目から、注文がロードされ、アニメーション化され、デリゲート メソッドが表示されます。sample=[[ViewControllerSample alloc]initWithNibName:@"ViewControllerSample" bundle:nil]; も入れてください。Second View Controller の init 部分に。

または、アニメーションの前に updateGUI を呼び出すことができます。そこで【UIView遷移前に...

[sc updateGUI];
于 2012-11-08T11:29:28.577 に答える