Мое приложение customTabBar загружает контроллер представления, когда нажата одна из кнопок панели вкладок. Одна из кнопок панели вкладок открывает UIImagePickerController с оверлеем сверху, но кнопки в оверлее не отображаются - на самом деле это наложение Nil.
Последовательность следующая:
AppDelegate выделяет и инициализирует различные контроллеры для каждой кнопки панели пользовательских вкладок в applicationDidFinishLaunching;
cameraTabViewController выделяет и инициализирует различные контроллеры подпредставления, включая subViewCamera, в своем методе init:
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
.
Если я заменю cameraTabViewController напрямую на subViewCamera в appDelegate при создании пользовательской панели вкладок, все будет работать так, как ожидается, и камера будет показана с наложением, но, к сожалению, я не могу оставить это таким образом, потому что мне также нужны другие подпредставления .
Основное различие заключается в том, что в первом случае файл пера фактически не загружается, а выходы остаются нулевыми (метод viewDidLoad()
в ModalCameraViewController даже не вызывается). Я также попытался изменить шаг 2., чтобы subViewCamera инициализировалась с initWithNibName()
, но безуспешно.