Отображение 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 

}