UIImagePickerController est facile à utiliser, mais je suis tout à coup en train de trouver ça exaspérant quand je ne l'ai pas trouvé auparavant. Qu'est-ce qui se passe est que parfois la méthode imagePickerController: didFinishPickingImage: editingInfo delegate ne semble pas fonctionner - l'image ne sera pas affichée dans le UIImageView même après l'attribution a été faite. Parfois, parfois, et de plus, chaque exemple de code que j'ai essayé (sur le web, dans le livre "Beginning iPhone 3 Development", etc.) présente le même problème. Je ne sais pas pourquoi, et le problème se pose aussi bien sur mon iPhone 3G que sur mon 3GS, donc je doute que ce soit un problème matériel. Ces périphériques exécutent OS 3.1.2. Le contrôleur de vue est chargé à partir d'un fichier xib qui contient un bouton et l'UIImageView. Je voudrais vraiment quelqu'un pour me dire quelle chose stupide que je fais évidemment mal :-)UIImagePickerController weirdness
Voici le code - j'ai essayé de rendre l'application plus petit que je pouvais que présente le problème:
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface imagepickerViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
{
IBOutlet UIButton *button;
IBOutlet UIImageView *imageView;
}
@property (nonatomic, retain) UIImageView *imageView;
- (IBAction)takepic;
- (void)usePic:(UIImage *)pic;
@end
#import "imagepickerViewController.h"
@implementation imagepickerViewController
@synthesize imageView;
- (IBAction)takepic
{
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
[self presentModalViewController:picker animated:YES];
[picker release];
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)info
{
[self usePic:image];
[picker dismissModalViewControllerAnimated:YES];
// after this method returns, the UIImageView should show the image -- yet very often it does not ...
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[picker dismissModalViewControllerAnimated:YES];
}
- (void)usePic:(UIImage *)picture
{
imageView.image = picture;
}
@end
Souhaitez-vous iPhone OS avant la version 3.0? Sinon, pensez à utiliser -imagePickerController: didFinishPickingMediaWithInfo: à la place; -imagePickerController: didFinishPickingImage: editingInfo: est obsolète dans iPhone OS 3.0. Je ne sais pas si cela va aider à résoudre le problème; Je ne peux certainement pas voir quelque chose de mal avec le code que vous avez posté. –