我有一个视图控制器,其中有一个按钮和一个窗口。ChildViewController视图进入然后消失
通过按下按钮,窗口中的视图应该改变。
窗口中的视图是另一个ViewController及其视图。
按下按钮时,所有的方法viewDidLoad
,viewWillAppear
,viewDidAppear
运行。
然而,经过viewDidAppear
运行,该视图中消失,而不运行viewWillDisappear
和viewDidDisappear
的观点确实出现了前一秒钟出现这种情况,和它的所有元素都intialized,如果我暂停与运行调试窗口,以及任何UI元素,它们不为空。
为什么会发生这种情况?
这里是我添加视图代码:
if(![self.childViewControllers containsObject:_detailsContainer]){
_detailsContainer.view.frame = self.scrollView.bounds;
[_detailsContainer willMoveToParentViewController:self];
[self addChildViewController:_detailsContainer];
UIViewController *currentViewController = [_mainSource viewControllerForContentAtIndex:self.pageIndex];
[self transitionFromViewController:currentViewController toViewController:_detailsContainer duration:0.2 options:UIViewAnimationOptionTransitionCrossDissolve animations:NULL completion:^(BOOL finished){
[_detailsContainer didMoveToParentViewController:self];
}];
}
这是我viewWillAppear
和子视图控制器的viewDidAppear
:
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if(self.isEditingDetails){
[self setUserDetails:[self.userSettings getUserDetails]];
}
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
LogInfo(@"details view did appear");
}
实际调用currentController removeFromParentViewController一个例子是不是我需要的,因为我想保持电流控制器(因为它是永久性的)和新的控制器只是换入点击按钮 –
不用'transitionFromViewController'就可以做到这一点,因为这通常会取代现有的。您可以使用普通的UIView'animateWithDuration'动画在您的新ViewController中进行动画制作,而不是使用转换方法。 –