我有一个带有子视图的根视图控制器,作为子视图控制器视图的包装器。基本思想是我的根控制器有一个左右视图控制器,它们都出现在屏幕上(类似于 splitviewcontroller)。加载时会在根视图控制器上弹出一个模式视图并询问详细信息。模态视图然后联系服务器,并在得到响应后关闭。然后根控制器使用以下代码添加子视图控制器:
[self addViewController:self.leftViewController];
[self addViewController:self.rightViewController];
[self addView:self.rightViewController.view ToWrapper:self.rightViewWrapper];
[self addView:self.leftViewController.view ToWrapper:self.leftViewWrapper];
添加视图控制器在哪里:
[self addChildViewController:controller];
[controller didMoveToParentViewController:self];
而 addViewToWrapper 只是将视图控制器的视图添加到 rootViewController 的相关子视图中,如下所示:
[[viewWrapper.contentView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
newSubview.frame = viewWrapper.contentView.bounds;
newSubview.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[viewWrapper.contentView addSubview:newSubview];
99% 的时间都可以正常工作。两个视图都会立即出现,并且 viewWillAppear 会在两个子控制器中触发。但是,有时屏幕会在短时间内保持白色,并且 viewWillAppear 不会在右侧视图控制器(编辑:和左侧)中触发。所有其他视图生命周期方法都会触发,只是不会触发 viewWillAppear。
不幸的是,我不能为整个类提供代码,因为它很复杂并且是专有的。但是,对于这种间歇性行为,此描述中是否有任何线索?