UIImagePickerController ist einfach zu bedienen, aber ich bin ganz plötzlich finden es ärgerlich, wenn ich nicht finden es so vor. Was passiert ist, dass manchmal die imagePickerController:didFinishPickingImage:editingInfo Delegate-Methode scheint nicht zu funktionieren - das Bild wird nicht in der UIImageView angezeigt, auch nachdem die Zuordnung vorgenommen wurde. Manchmal wird es, manchmal nicht, und darüber hinaus jedes einzelne Bit des Beispielcodes, die ich versucht habe (aus dem Web, aus dem "Beginning iPhone 3 Development" Buch, usw.) zeigt das gleiche Problem. Ich bin ratlos, warum, und das Problem tritt sowohl auf meinem iPhone 3G als auch auf meinem 3GS auf, so dass ich bezweifle, dass es ein Hardware-Problem ist. Auf diesen Geräten läuft OS 3.1.2. Der View Controller wird von einer xib-Datei geladen, die eine Schaltfläche und die UIImageView enthält. Ich würde mich wirklich freuen, wenn mir jemand sagen könnte, was ich offensichtlich falsch mache :-)
Hier ist der Code - ich habe versucht, die kleinste Anwendung zu machen, die ich konnte, die das Problem zeigt:
#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