そのため、UIViewController
内側に aUIViewController
と内側に a がUIViewController
あり、そのフレームを調整しようとしています。ただし、 を呼び出すと、フレームを調整しようとしている特定のビュー コントローラーの がsetFrame:
呼び出されます。viewDidLoad
ただし、その時点でframeSize
は、私が設定したものではありません。ここviewDidLoad
では、 というプライベート メソッドも呼び出しています。このメソッドはloadDataFromServer
、最初にメモリからデータを取得し、次にサーバーを呼び出します。メモリからデータをロードしているため、基本的にはviewDidLoadが終了する前に非常に迅速に実行されるため、フレームサイズはまだ調整されていません. したがって、最初に間違ったサイズ/レイアウトのビューが表示され、サーバーからデータを取得した後に調整されます。この時点viewDidLoad
で終了し、フレームが適切に調整されます。
loadDataFromServer
コールを次に移動するとviewDidAppear
、すべて問題ないように見えます。問題は、いつ呼び出されるかわからないということですviewDidAppear
。それは一度呼び出されviewDidLoad
ますか?それとも後に呼び出されviewWillAppear
ますか?これに対するアイデア/回避策はありますか?
ContainerViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"ContainerViewController"];
vc.delegate = self;
UINavigationController *newsfeedNavController = [[UINavigationController alloc] initWithRootViewController:vc];
[self addChildViewController:newsfeedNavController];
newsfeedNavController.view.frame = CGRectMake(0, 0, self.view.frameWidth, self.view.frameHeight);
[self.view addSubview:newsfeedNavController.view];
[newsfeedNavController didMoveToParentViewController:self];
[newsfeedNavController release];