Fix the double load issue.

This commit is contained in:
Joseph Harnish 2011-06-05 00:32:52 -04:00
parent 3a1525ec02
commit c449dad6b9
4 changed files with 27 additions and 7 deletions

View file

@ -21,11 +21,13 @@
IBOutlet UIImageView *previewImageView; IBOutlet UIImageView *previewImageView;
NSInteger imageNumber; NSInteger imageNumber;
UIStatusBarStyle originalStatusBarStyle; UIStatusBarStyle originalStatusBarStyle;
UIImage * largeImage;
} }
@property (nonatomic, retain) IBOutlet UIImageView *previewImageView; @property (nonatomic, retain) IBOutlet UIImageView *previewImageView;
@property (nonatomic, retain, readonly) JPImagePickerOverviewController *overviewController; @property (nonatomic, retain, readonly) JPImagePickerOverviewController *overviewController;
@property (nonatomic) NSInteger imageNumber; @property (nonatomic) NSInteger imageNumber;
@property (nonatomic, retain) UIImage * largeImage;
- (id)initWithOverviewController:(JPImagePickerOverviewController *)newOverviewController; - (id)initWithOverviewController:(JPImagePickerOverviewController *)newOverviewController;
- (void)prepareForImageNumber:(NSInteger)newImageNumber; - (void)prepareForImageNumber:(NSInteger)newImageNumber;

View file

@ -13,6 +13,7 @@
@implementation JPImagePickerDetailController @implementation JPImagePickerDetailController
@synthesize previewImageView, overviewController, imageNumber; @synthesize previewImageView, overviewController, imageNumber;
@synthesize largeImage;
- (id)initWithOverviewController:(JPImagePickerOverviewController *)newOverviewController { - (id)initWithOverviewController:(JPImagePickerOverviewController *)newOverviewController {
if (self = [super initWithNibName:@"JPImagePickerDetailController" bundle:nil]) { if (self = [super initWithNibName:@"JPImagePickerDetailController" bundle:nil]) {
@ -64,12 +65,16 @@
- (void)prepareForImageNumber:(NSInteger)newImageNumber { - (void)prepareForImageNumber:(NSInteger)newImageNumber {
if(imageNumber == newImageNumber){
previewImageView.image = largeImage;
}
imageNumber = newImageNumber; imageNumber = newImageNumber;
previewImageView.image = [[overviewController.imagePickerController.dataSource previewImageView.image = [[overviewController.imagePickerController.dataSource
imagePicker:overviewController.imagePickerController imagePicker:overviewController.imagePickerController
imageForImageNumber:imageNumber] imageForImageNumber:imageNumber]
scaleToSize:CGSizeMake(kJPImagePickerControllerPreviewImageSizeHeight, kJPImagePickerControllerPreviewImageSizeHeight) scaleToSize:CGSizeMake(kJPImagePickerControllerPreviewImageSizeHeight, kJPImagePickerControllerPreviewImageSizeHeight)
onlyIfNeeded:YES]; onlyIfNeeded:YES];
largeImage = previewImageView.image;
} }
- (IBAction)cancelPreview:(id)sender { - (IBAction)cancelPreview:(id)sender {

View file

@ -26,6 +26,10 @@
return self; return self;
} }
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad { - (void)viewDidLoad {
@ -34,11 +38,10 @@
[self setImagePickerTitle:imagePickerController.imagePickerTitle]; [self setImagePickerTitle:imagePickerController.imagePickerTitle];
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self target:self
action:@selector(cancelPicking:)]; action:@selector(cancelPicking:)];
self.navigationItem.rightBarButtonItem = cancelButton; self.navigationItem.rightBarButtonItem = cancelButton;
[cancelButton release]; [cancelButton release];
UIButton *button; UIButton *button;
UIImage *thumbnail; UIImage *thumbnail;
@ -71,7 +74,7 @@
scrollView.contentSize = CGSizeMake(self.view.frame.size.width, height); scrollView.contentSize = CGSizeMake(self.view.frame.size.width, height);
scrollView.clipsToBounds = YES; scrollView.clipsToBounds = YES;
} }
- (void)setImagePickerTitle:(NSString *)newTitle { - (void)setImagePickerTitle:(NSString *)newTitle {
@ -97,10 +100,17 @@
- (void)buttonTouched:(UIButton *)sender { - (void)buttonTouched:(UIButton *)sender {
//[self.activityIndicator startAnimating];
[self performSelector:@selector(pushDetailViewWithSender:) withObject:sender afterDelay:0];
}
- (void)pushDetailViewWithSender:(UIButton *)sender {
if (detailController == nil) { if (detailController == nil) {
detailController = [[JPImagePickerDetailController alloc] initWithOverviewController:self]; detailController = [[JPImagePickerDetailController alloc] initWithOverviewController:self];
} }
[detailController prepareForImageNumber:(NSInteger)sender.tag];
detailController.imageNumber = sender.tag;
[imagePickerController.modalNavigationController pushViewController:detailController animated:YES]; [imagePickerController.modalNavigationController pushViewController:detailController animated:YES];
} }

View file

@ -204,6 +204,7 @@
isa = PBXProject; isa = PBXProject;
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "JPImagePickerDemo" */; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "JPImagePickerDemo" */;
compatibilityVersion = "Xcode 3.1"; compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1; hasScannedForEncodings = 1;
knownRegions = ( knownRegions = (
English, English,
@ -273,6 +274,7 @@
GCC_PREFIX_HEADER = JPImagePickerDemo_Prefix.pch; GCC_PREFIX_HEADER = JPImagePickerDemo_Prefix.pch;
INFOPLIST_FILE = "JPImagePickerDemo-Info.plist"; INFOPLIST_FILE = "JPImagePickerDemo-Info.plist";
PRODUCT_NAME = JPImagePickerDemo; PRODUCT_NAME = JPImagePickerDemo;
SDKROOT = iphoneos;
}; };
name = Debug; name = Debug;
}; };
@ -285,6 +287,7 @@
GCC_PREFIX_HEADER = JPImagePickerDemo_Prefix.pch; GCC_PREFIX_HEADER = JPImagePickerDemo_Prefix.pch;
INFOPLIST_FILE = "JPImagePickerDemo-Info.plist"; INFOPLIST_FILE = "JPImagePickerDemo-Info.plist";
PRODUCT_NAME = JPImagePickerDemo; PRODUCT_NAME = JPImagePickerDemo;
SDKROOT = iphoneos;
}; };
name = Release; name = Release;
}; };