我的customTabBar应用程序在按下其中一个自定义标签栏按钮时加载视图控制器。其中一个标签栏按钮打开一个UIImagePickerController,顶部有一个叠加层,但叠加层中的按钮没有显示 - 叠加层实际上是无。
序列如下:
AppDelegate为applicationDidFinishLaunching中的每个自定义标签栏按钮分配并初始化各种控制器;
cameraTabViewController在其init方法中分配和初始化各种子视图控制器,包括subViewCamera:
self.subViewCamera = [[ModalCameraViewController alloc] init];
按下相机标签栏按钮时,相关视图控制器会调用
(void)viewDidAppear:(BOOL)animated {
[self openSubViewCamera:nil];
[super viewDidAppear:animated];
}
subViewCamera实例化UIImagePickerController并显示它:
cameraUI = [[UIImagePickerController alloc] init];
...
if ( self.cameraOverlayView == Nil ) {
NSLog( @"THE CAMERA OVERLAY VIEW IS NIL" );
} else {
NSLog( @"THE CAMERA OVERLAY VIEW IS PUMPING UP" );
}
cameraUI.cameraOverlayView = self.cameraOverlayView;
...
[controller presentModalViewController:cameraUI animated:NO];
此时,将显示imagePicker模式窗口,但缺少叠加视图,日志显示行THE CAMERA OVERLAY VIEW IS NIL
。
如果我在构建自定义标签栏时直接用appDelegate中的subViewCamera替换cameraTabViewController,一切都按预期工作,并且相机显示有叠加但不幸的是我不能以这种方式离开,因为我还需要其他子视图
主要区别在于,在第一种情况下,实际上没有加载nib文件,并且出口保持为nil(甚至没有调用ModalCameraViewController的viewDidLoad()
方法)。我还尝试更改步骤2.以便使用initWithNibName()
初始化subViewCamera但没有成功。