UIPopoverController & UIImagePickerControl: “Popovers non possono essere presentati da una vista che non ha una finestra”
-
25-09-2019 - |
Domanda
Sto cercando di visualizzare un UIImagePickerControl nel mio iPad. In un primo momento, il debugger mi ha detto che avevo bisogno di metterlo in un popover quando si fa su un iPad. Così ho scritto il seguente codice:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 400.0, 400.0)
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
Tuttavia, ora ottengo il seguente errore: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Popovers cannot be presented from a view which does not have a window.'
Qualche suggerimento su quello che devo fare? So che self.view dovrebbe hanno una finestra, ma a quanto pare ... non lo fa?
Soluzione
Questo può accadere se si sta eseguito quel po 'di codice prima della vista viene caricato, come self.view
è ancora pari a zero e quindi lo è anche self.view.window
.
E 'possibile che si sta facendo questo in un metodo init o qualche altro posto prima che la vista viene caricato (prima -viewDidLoad:
si chiama)?
Altri suggerimenti
Questo errore mi aveva sconcertato, ma si è scoperto che era perché la barButtonItem
ero di passaggio a presentPopoverFromBarButtonItem
era un elemento UIBarButtonSystemItemFlexibleSpace
formica un pulsante di vero e proprio. Il mio errore dell'utente, ma solo così la gente che questo può als