我正在尝试使用以下代码将一个子视图控制器添加到包含在
UINavigationController
中的UIViewController
中:- (void)buttonTapped:(id)sender
{
MyChildController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MyChild"];
[self addChildViewController:viewController];
[self.view addSubview:viewController.view];
[viewController didMoveToParentViewController:self];
viewController.view.alpha = 0.0f;
[UIView animateWithDuration:0.4 animations:^{
viewController.view.alpha = 1.0f;
}];
}
但这是结果:
如您所见,UINavigatioBar
和UIToolbar
仍然在子视图控制器的顶部。我该如何将子视图控制器置于所有内容之上?我已经尝试使用以下代码进行替换:
[self.navigationController addChildViewController:viewController];
[self.navigationController.view addSubview:viewController.view];
[viewController didMoveToParentViewController:self.navigationController];
但是这样一来,viewController
的viewDidAppear:animated
方法不会被调用。我不知道为什么。
didMoveToParentViewController:
方法。类似这样,[child didMoveToParentViewController:nil]
。 - Mohammad AbdurraafayaddSubview
之前调用beginAppearanceTransition
,并在removeFromSuperview
之后调用endAppearanceTransition
,否则可能会出现“不平衡的调用”错误。 - thijsonline