2010-05-12 5 views
5

J'utilise ce code pour ouvrir un popover avec imagepickerIpad UIImagePickerController et erreur UIPopoverController

-(IBAction)photosAction:(id)sender 
{ 
// dismiss any left over popovers here 
UIImagePickerController* picker = [[UIImagePickerController alloc] init]; 
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
picker.delegate = self; 

UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:picker]; 
self.popoverController = popover;   
popoverController.delegate = self; 
[popoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES]; 
[picker release]; 

Mais il en résulte cette erreur demande de membre « popoverController » quelque chose pas une structure ou d'une union et cette erreur 'popoverController' non déclaré (première utilisation dans cette fonction).

Aussi je veux rejeter le popover lorsque l'image est sélectionnée.

Quel code dois-je mettre dans la fonction suivante pour fermer le popover une fois que l'image est sélectionnée.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

Merci pour l'aide! L'erreur signifie que popoverController n'a pas été déclaré dans le contrôleur de vue.

Répondre

7

Cette erreur a été provoquée car ma fonction nécessite un élément de barre et j'utilisais un bouton d'interface utilisateur normal.

+0

http://mobiforge.com/designing/story/using-popoverview-ipad-app-development – nishantcm

+0

J'ai été battant la tête sur le même problème. Y a-t-il une chance que tu puisses poster ton code? Avez-vous modifié l'interface utilisateur pour utiliser un élément de barre, ou modifié le code? – Boeckm

7

Vous devez ajouter à l'interface comme Ivar et la propriété (ce n'est pas intégré):

@interface ... { 
    ... 
    UIPopoverController *popoverController; 
} 
@property (nonatomic, retain) UIPopoverController *popoverController; 
@end 

Dans la mise en œuvre, ajoutez le @synthesize, réglez à zéro en viewDidUnload, et la libération dans dealloc.

Pour ignorer le popover, appelez le dismissPopoverAnimated:.

[self.popoverController dismissPopoverAnimated:YES]; 
+0

Merci, cette résolu les erreurs. Mais quand je clique sur le bouton qui est censé charger le popover, je reçois ces erreurs dans la console. *** - [Voir UIRoundedRectButton]: sélecteur non reconnu envoyé à l'instance 0x4d1e140 en raison de l'application Mettre fin exception uncaught 'NSInvalidArgumentException', raison: « *** - [Voir UIRoundedRectButton]: sélecteur non reconnu envoyé à l'instance 0x4d1e140 – nishantcm

+0

Quelles actions avez-vous défini pour le bouton cliquez? Afficher le code qui crée le bouton. Assurez-vous que le sélecteur dans addTarget indique "photosAction:" avec deux points à la fin. Si le bouton est créé dans IB, vérifiez la connexion pour la retouche à l'intérieur. – DyingCactus

+0

IBOutlet UIButton * selectImageBtn; @property (nonatomic, retain) IBOutlet UIButton * selectImageBtn; @synthesize selectImageBtn – nishantcm

0

essayez d'utiliser ce code:

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]; 
Questions connexes