1

viewDidLoadメソッドは、のライフサイクル中に複数回呼び出される可能性があることを知っていUIViewControllerます。しかし、それはどのように可能ですか?直接呼び出さずに複数回呼び出すにはどうすればよいですか?私はそれをこのようにしてみました:

 UIView *view  = [[UIView alloc] initWithFrame:self.view.frame];

view.backgroundColor = [UIColor greenColor];

self.view = view;

私の見方は実際には変わっていますが、viewDidLoad呼ばれていません。誰かが例をあげることができますか?

4

2 に答える 2

3

viewController のプロパティに初めてアクセスするviewと、ビューが作成されloadViewviewDidLoad呼び出しが行われます。

ビューが破棄されない限り、再度呼び出しを受信することはありません。viewDidLoadこれは、viewController が画面から消えて、UIKit表示されていないビューを削除することを決定した場合に発生する可能性があります。したがって、次にプロパティにアクセスすると、viewそれが存在しないことがわかり、再度 で作成してloadViewから を呼び出しますviewDidLoad

于 2013-03-10T11:53:09.053 に答える
0

viewWillAppearメソッドはUIViewControllerメソッドです。直接電話してはいけないのはなぜですか?

ちなみに、これを行う方法はありません。UIViewをself.viewに割り当てている間は、init、loadView、didLoadメソッドでそれを行っていません。

ライフサイクルは次のとおりです。

  • 初期化
  • loadView//ここでビューを変更します
  • viewDidLoad

次に、ビューを提示し、次のことを行います。

  • viewWillAppear:
  • viewDidAppear:

uiviewcontrollerのライフサイクル中にビューを変更する場合は、次のことを行う必要があります。

UIView *view  = [[UIView alloc] initWithFrame:self.view.frame];

view.backgroundColor = [UIColor greenColor];
[self viewWillAppear:NO]; //set to yes if you are making some kind of animation
self.view = view;
[self viewDidAppear:NO];

UIVIewControllerのライフサイクルに従って、が消え、消えたことが呼び出されます。

于 2013-03-10T12:02:10.990 に答える