ios - ChildViewController View 进入然后消失

标签 ios childviewcontroller

我有一个 View Controller ,其中有一个按钮和一个窗口。

按下按钮,窗口中的 View 应该改变。

窗口中的 View 是另一个 ViewController 及其 View 。

当按下按钮时,viewDidLoadviewWillAppearviewDidAppear 的所有方法都会运行。

但是,viewDidAppear运行后,view消失了,没有运行viewWillDisappearviewDidDisappear

在这发生之前 View 确实出现了一秒钟,并且它的所有元素都被初始化,如果我用调试窗口暂停运行,并且 po 任何 UI 元素,它们都不是空的。

为什么会这样?

这是我添加 View 的代码:

    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];

    }];
}

这是我的 subview Controller 的 viewWillAppearviewDidAppear:

-(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");

}

最佳答案

我认为您的问题是由一些 UIViewController 包含问题引起的。

当你调用[self addChildViewController:_detailsContainer]时,系统会自动调用[_detailsConter willMoveToParentViewController:self]。但是,您必须在转换之前调用 [currentViewController willMoveToParentViewController:nil]

此外,您还必须在动画的完成 block 中调用 [currentViewController removeFromParentViewController]

有关如何使用 transitionFromViewController... 的示例,请参阅此答案 Proper usage of transitionFromViewController:toViewController:duration:options:animations:completion:

关于ios - ChildViewController View 进入然后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23366464/

相关文章:

ios Google Cloud Messaging (GCM) 没有收到远程通知

fonts - OpenGL-ES 字体渲染(在 iOS 上)...完整性检查

ios - Swift - 无法通过导航 Controller 中的自定义选项卡寻呼机传递数据

ios - View 不显示另一个 ChildViewController 的 childViewController

iphone - 方法dismissviewdidfinish的重复声明

iphone - 如何用多个其他字符串 [NSString] 替换多个字符串的出现

ios - pointInside :withEvent inside uibezierpath (overlapping area between two views)

objective-c - UIScrollView subview 容器错误地更改框架

swift - iOS - 如何通过子容器设置父 View Controller 的imageview?

ios - 在不覆盖 iPhone 上的当前 View 的情况下呈现模态视图 Controller