是否可以在当前UIViewController之上的UIView中呈现UIViewController?我已经完成了交换视图控制器,但是当我尝试这样做时,在多次呈现和删除UIView然后单击主VC表之后出现错误。这是我点击导航栏按钮时的内容:
- (void)composeMessage:(id)sender{
if (_container.frame.origin.x != 350) {
[self.view endEditing:YES];
[UIView animateWithDuration:0.1 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
[_container setFrame:CGRectMake(350, 0, self.view.frame.size.width, self.view.frame.size.height)];
}completion:^(BOOL finished){
[_CFVC removeFromParentViewController];
}];
}else {
_CFVC = [[CFVC alloc]init];
[_CFVC willMoveToParentViewController:self];
__weak typeof(self) weakself = self;
_CFVC.composeTo = ^(NSString *response) {
__strong typeof(self) strongself = weakself;
[strongself newMessage:response];
};
[self addChildViewController:_CFVC];
_CFVC.view.frame = _container.bounds;
[_container addSubview:_CFVC.view];
[UIView animateWithDuration:0.2 delay:0.05 options:UIViewAnimationOptionCurveLinear animations:^{
[_container setFrame:self.view.bounds];
}completion:^(BOOL finished){
[_CFVC didMoveToParentViewController:self];
}];
}
}
当进出VC交换时,从我看过的例子中,必须从parentViewController中删除一个VC。我是否应该在使用第二个VC添加_container
视图之前删除主VC,然后将其添加回来?
更新:
删除[_CFVC removeFromParentViewController];
后,我不再收到错误消息。由于我添加了一个子视图,我不应该在它离开屏幕时将其删除吗?删除removeFromParentViewController
是否有任何问题?
UPDATE2:
此外,我将第二个VC的初始化移动到viewDidLoad方法,然后重新插入removeFromParentViewController ...并且没有错误......
答案 0 :(得分:0)
您尝试过以下方法吗?而不是手动创建UIView并向其添加视图控制器,以下方法为您做到了
presentViewController:animated:completion:
答案 1 :(得分:0)
此调用" [_ CFVC removeFromParentViewController];"是需要的,在此之前你需要删除它的视图,它也被添加为_container的子视图。也可以调用[_CFVC.view removefromsuperview]。 而不是显式设置框架 - _CFVC.view.frame = _container.bounds; 您可以在使用initWithFrame创建_CFVC时创建它:。