子ビュー コントローラーのビューのラッパーとなるサブビューを持つルート ビュー コントローラーがあります。基本的な考え方は、私のルート コントローラーには左右のビュー コントローラーがあり、どちらも画面に表示されます (splitviewcontroller に似ています)。読み込み時に、モーダル ビューがルート ビュー コントローラー上にポップアップし、詳細を尋ねます。次に、モーダル ビューはサーバーに接続し、応答を取得した後に閉じられます。次に、ルート コントローラーは、次のコードを使用して子ビュー コントローラーを追加します。
[self addViewController:self.leftViewController];
[self addViewController:self.rightViewController];
[self addView:self.rightViewController.view ToWrapper:self.rightViewWrapper];
[self addView:self.leftViewController.view ToWrapper:self.leftViewWrapper];
ビューコントローラーの追加は次のとおりです。
[self addChildViewController:controller];
[controller didMoveToParentViewController:self];
addViewToWrapper は、次のように、ビュー コントローラーのビューを rootViewController の関連するサブビューに追加するだけです。
[[viewWrapper.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
newSubview.frame = viewWrapper.contentView.bounds;
newSubview.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[viewWrapper.contentView addSubview:newSubview];
99% の場合、これで問題なく動作します。両方のビューが即座に表示され、両方の子コントローラーで viewWillAppear が発生します。ただし、画面が短時間白いままになり、viewWillAppear が右側のビュー コントローラー (EDIT: と左側) で起動しないことがあります。viewWillAppear 以外のすべてのビュー ライフサイクル メソッドが起動します。
残念ながら、クラス全体のコードは複雑で独自のものであるため、提供できません。しかし、この説明には、この断続的な動作の手がかりはありますか?