不调用viewDidAppear和viewWillAppear方法

时间:2016-01-07 06:08:22

标签: ios objective-c uiview uiviewcontroller

我有一个以编程方式创建的UIViewController,名为“VC”,最重要的是我需要加载现有的UIViewController

我使用下面的代码来做到这一点,它工作正常。 我可以在“VC”上看到我现有的UIViewController,但在现有视图控制器中没有检测到任何viewDidAppearviewWillAppear

我从viewDidAppearviewWillAppear获取数据,所以我现有的视图控制器集合视图一直是空的。

ExistingViewController* presObj= [self.storyboard instantiateViewControllerWithIdentifier:@"oad"];

[vc.view addSubview:presObj.view];
[self addChildViewController:presObj];
[presObj didMoveToParentViewController:self];

3 个答案:

答案 0 :(得分:0)

您是否初始化了故事板课程?

self.storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];

所以我现有的ViewController集合视图一直是空的 - >你在代码中使用集合视图吗?

答案 1 :(得分:0)

首先,您需要添加addChildViewController。然后将该childviewcontroller视图添加到主视图中。

只需在添加到视图子视图之前添加[self addChildViewController:presObj];

ExistingViewController* presObj= [self.storyboard instantiateViewControllerWithIdentifier:@"oad"];
[self addChildViewController:presObj];
[vc.view addSubview:presObj.view];
[presObj didMoveToParentViewController:self];

答案 2 :(得分:-2)

好的,如果你这样加载那么现有视图控制器的ViewDidLoad()会加载,你可以放一个条件(如果需要的话)然后你可以调用ViewDidAppear()ViewWillAppear()如下所示

 existingviewcontroller *obj=[[existingviewcontroller alloc]init];
        [obj viewWillAppear:YES];
        [obj viewDidAppear:YES];

这将有效