У меня есть подкласс UIViewController, который содержит экземпляр UIImagePickerController. Давайте назовем этот контроллер CameraController. Среди прочего CameraController управляет overlayView экземпляра UIImagePickerController и другими представлениями, кнопками, метками и т. Д., Которые отображаются, когда UIImagePickerController, назовем этот экземпляр photoPicker, отображается как модальный контроллер.
Наложение камеры PhotoPicker и элементы, являющиеся частью иерархии представления CameraController, отображаются и функционируют должным образом. Проблема в том, что я не могу использовать инициализатор UIViewController по умолчанию для создания иерархии представления CameraController.
Я инициализирую CameraController из другого UIViewController. Давайте назовем этот контроллер WebViewController. Когда пользователь нажимает кнопку в представлении, управляемом WebViewController, вызывается метод launchCamera. В настоящее время это выглядит так:
- (void) launchCamera{
if (!cameraController) {
cameraController = [[CameraController alloc] init];
// cameraController = [[CameraController alloc] initWithNibName:@"CameraController"
// bundle:[NSBundle mainBundle]];
cameraController.delegate = self;
}
[self presentModalViewController:cameraController.photoPicker animated:NO];
}
Я хочу иметь возможность создавать CameraController, вызывая initWithNibName: bundle:, но он не работает
как я объясню.
Метод инициализации CameraController выглядит следующим образом:
- (id) init {
if (self == [super init]) {
// Create and configure the image picker here...
// Load the UI elements for the camera overlay.
nibContents = [[NSBundle mainBundle] loadNibNamed:@"CameraController" owner:self options:nil];
[nibContents retain];
photoPicker.cameraOverlayView = overlay;
// More initialization code here...
}
return self;
}
Единственный способ получить элементы для загрузки из файла CameraController.xib - это вызвать loadNibNamed: owner: options :. В противном случае камера начинает работать, но наложение и другие компоненты обзора не отображаются. Похоже, что побочным эффектом этой проблемы является то, что ни один из методов управления представлением в CameraController никогда не вызывается, например viewDidLoad, viewDidAppear и т. Д.
Однако все розетки, определенные в кончике, похоже, работают. Например, при загрузке камеры отображается вид с некоторыми инструкциями для пользователя. На этом представлении есть кнопка, чтобы отклонить его. Кнопка объявляется в CameraController вместе с вызываемым методом, который отклоняет это представление инструкций. Все это соединено через перо и прекрасно работает. Кроме того, кнопка для фотосъемки находится на представлении этих серверов как наложение фотопикера. Эта кнопка и метод, который вызывается при ее нажатии, управляются CameraController, и все они подключены к кончику. Он тоже отлично работает.
Так чего мне не хватает? Почему я не могу использовать инициализатор UIViewController по умолчанию для создания экземпляра CameraController. И почему ни один из методов управления представлениями CameraController никогда не вызывался.
Спасибо.