1

そのため、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];
4

0 に答える 0