11

Così ho un UIPopoverController ciò che ospita il mio UINavigationController dove ho il mio UITableViewController comunque una delle mie opzioni sul UITableView è di andare e selezionare un'immagine con il UIImagePickerController ... ora su iPhone posso semplicemente utilizzare presentModalViewController:animated: tuttavia rimettere che dall'interno di un'UIPopoverController causa un crash in modo da quello non è possibile ...Mostrando UIImagePickerController in UIPopoverController con UINavigationController esistente (aggiungendo tasto back)

so anche il UIImagePickerController ha bisogno proprio UINavigationController quindi non posso solo spingere pushViewController:animated: sia ..

Così ho capito che se continuo a un link alla UIPopoverController ho creato, posso quindi utilizzare setContentViewController:animated: per passare viewController del UIImagePickerController ...

Tuttavia, ora sto bloccato a dare all'utente un modo per tornare indietro al precedente UINavigationController come ho bisogno di essere in grado di aggiungere un pulsante di annullamento alla UIImagePickerController ma quando provo a fare questo il pulsante annulla non verrà aggiunto ...

Heres il mio codice che sto usando

-(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."]; 
    } 
} 

Quindi la mia domanda è .. Qualcuno sa come posso aggirare il è? o aggiungendo un pulsante cancel/back che posso collegare per far tornare indietro i Controller di navigazione o un altro modo per presentarlo (vorrei evitare di passare tra due UIPopoverControllers ma non so cos'altro posso fare ..

Grazie

Liam

risposta

11

Ahh .. dopo un po 'di pausa ho trovato questo: https://discussions.apple.com/thread/1710435?start=0&tstart=0

utilizzando l'UINavigationControllerDelegate è possibile utilizzare il metodo navigationController:willShowViewController:animated: per accedere al navigationBar .. poi con un po' di codice (di seguito) è possibile aggiungere un pulsante.

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 

} 
+0

Funziona come un fascino. –

Problemi correlati