Отображение UIImagePickerController в UIPopoverController с существующим UINavigationController (добавление кнопки возврата)
Итак, у меня есть UIPopoverController
, в котором находится мой UINavigationController
, где у меня есть мой UITableViewController
, однако один из моих опций в UITableView
должен пойти и выбрать изображение с помощью UIImagePickerController
... Теперь iPhone я могу просто использовать presentModalViewController:animated:
, но называя это изнутри UIPopoverController вызывает сбой, так что это невозможно...
Я также знаю, что UIImagePickerController
нуждается в собственном UINavigationController
, поэтому я не могу просто нажать pushViewController:animated:
либо...
Итак, я понял, что если я сохраню ссылку на созданный UIPopoverController
, я могу использовать setContentViewController:animated:
для переключения на UIImagePickerController viewController...
Однако теперь я заставляю пользователя вернуться к предыдущему UINavigationController
, поскольку мне нужно добавить кнопку отмены в UIImagePickerController
, но когда я пытаюсь сделать это, кнопка отмены не будет добавлен...
Вот мой код, который я использую
-(void)doPhotoalbums {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
[imagePicker setDelegate:self];
[imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[imagePicker setContentSizeForViewInPopover:CGSizeMake(320, 480)];
UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:nil];
[imagePicker.navigationItem setLeftBarButtonItem:cancel];
//[self presentModalViewController:imagePicker animated:YES];
[[self parentPopoverController] setContentViewController:imagePicker animated:YES];
} else {
[UIAlertView showMessage:@"This device does not have any photo albums."];
}
}
Итак, мой вопрос. Кто-нибудь знает, как я могу обойти это? либо добавив кнопку отмены/возврата, что я могу подключить, чтобы заставить диспетчер контроля переключиться назад или другой способ представить это (я бы хотел избежать переключения между двумя UIPopoverControllers, но я не знаю, что еще я могу сделать..
Спасибо
Лиам
Ответы
Ответ 1
Ahh.. после небольшого перерыва я нашел это: https://discussions.apple.com/thread/1710435?start=0&tstart=0
с помощью UINavigationControllerDelegate вы можете использовать метод navigationController:willShowViewController:animated:
для доступа к navigationBar.. затем с помощью некоторого кода (ниже) вы можете добавить кнопку.
if ([navigationController isKindOfClass:[UIImagePickerController class]]) {
UINavigationBar *bar = navigationController.navigationBar;
UINavigationItem *top = bar.topItem;
UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(imagePickerControllerDidCancel:)];
[top setLeftBarButtonItem:cancel];
} else {
//do non imagePickerController things
}