viewDidLoad并在UIViewControllerContainment中设置框架大小

时间:2012-07-06 16:23:50

标签: iphone objective-c ios ipad uiviewcontroller

所以我在UIViewController内和UIViewController内有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];

0 个答案:

没有答案