Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未调用控制器的生命周期_Ios_Iphone_Uiviewcontroller - Fatal编程技术网

Ios 未调用控制器的生命周期

Ios 未调用控制器的生命周期,ios,iphone,uiviewcontroller,Ios,Iphone,Uiviewcontroller,我有两个带有UI(xib)的控制器,分别是A和B。现在我想在C上显示它们中的任何一个。要从A和B中选择,我创建一个新的控制器D,它决定显示谁(A或B)。现在它类似于C表示D,D将A或B作为子视图控制器 从C我现在想: [self presentViewController:D animated:YES completion:nil] D具有来自(A或B)的子视图控制器,如: 现在的问题是没有调用子视图控制器的生命周期。 我还使用[(A/B)beginAppearanceTransition:Y

我有两个带有UI(xib)的控制器,分别是A和B。现在我想在C上显示它们中的任何一个。要从A和B中选择,我创建一个新的控制器D,它决定显示谁(A或B)。现在它类似于C表示D,D将A或B作为子视图控制器

从C我现在想:

[self presentViewController:D animated:YES completion:nil]
D具有来自(A或B)的子视图控制器,如:


现在的问题是没有调用子视图控制器的生命周期。 我还使用[(A/B)beginAppearanceTransition:YES动画:NO];但是,使用这个方法只是第一次调用生命周期。
有人知道该由谁来解决吗?

我想您误解了didMoveToParentViewController:方法。此方法的参数应为容器。假设
self
是D,在通过调用
[self addChildViewController:(A/B)]
将(A/B)添加到D并且动画转换结束后,应该调用
[(A/B)didMoveToParentViewController:self]
;同样,当需要删除(A/B)时,调用
[(A/B)removeFromParentViewController]
,然后将自动调用
didMoveToParentViewController:

这是苹果公司的文件,解释了这一点:

如果要实现自己的容器视图控制器,它必须 调用子视图的didMoveToParentViewController:方法 完成到新控制器的转换后的控制器,或, 如果没有转换,则在调用 addChildViewController:方法。removeFromParentViewController 方法自动调用didMoveToParentViewController:方法 移除子视图控制器后,子视图控制器的


希望这可能会有所帮助。

我认为您误解了didMoveToParentViewController:方法。此方法的参数应为容器。假设
self
是D,在通过调用
[self addChildViewController:(A/B)]
将(A/B)添加到D并且动画转换结束后,应该调用
[(A/B)didMoveToParentViewController:self]
;同样,当需要删除(A/B)时,调用
[(A/B)removeFromParentViewController]
,然后将自动调用
didMoveToParentViewController:

这是苹果公司的文件,解释了这一点:

如果要实现自己的容器视图控制器,它必须 调用子视图的didMoveToParentViewController:方法 完成到新控制器的转换后的控制器,或, 如果没有转换,则在调用 addChildViewController:方法。removeFromParentViewController 方法自动调用didMoveToParentViewController:方法 移除子视图控制器后,子视图控制器的


希望这可能有帮助。

子视图控制器的生命周期不被称为“是什么意思?应该是
[(A/B)didMoveToParentViewController:self]
在假设“生命周期”意味着在每个viewController中调用viewDidLoad(),您在A和B viewDidLoad()方法中正确调用了[super viewDidLoad]吗?“未调用子视图控制器的生命周期”意味着不调用A/B的ViewWillDisplay和ViewDidDisplay方法。@Mikael是的,我调用了[super viewDidLoad]有什么作用子视图控制器的生命周期不称为“平均值”?它应该是
[(A/B)didMoveToParentViewController:self];
如果“生命周期”意味着在每个视图控制器中调用viewDidLoad(),那么在A和B viewDidLoad()方法中是否正确调用了[super viewDidLoad]“未调用子视图控制器的生命周期”表示不调用A/B的VIEWWILLEXPEND和VIEWDIDDEXPEND方法。@Mikael yes我调用了[super viewDidLoad]
[self addChildViewController:(A/B)];
[self didMoveToParentViewController:(A/B)];