sto ricevendo un'immagine dall'utente dalla galleria fotografica, e voglio passare ad un altro punto di vista ...Passando immagine da una vista all'altra
Ho letto che dovrei essere in grado semplicemente fare qualcosa di simile:
secView.imgView.image = selectedImage.image;
Impostazione mia UIImageView sulla seconda vista per essere l'immagine dal mio UIImageView ... Ma l'UIImageView nel secondo punto di vista è solo vuoto ...
mio il codice è questo ...
ViewController.h:
@interface ViewController : UIViewController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
{
UIImagePickerController *picker;
IBOutlet UIImageView *selectedImage;
SecondView *secondView;
}
@property (nonatomic, retain) UIImageView *selectedImage;
@property (nonatomic, retain) SecondView *secondView;
-(IBAction)sendImage:(id)sender;
-(IBAction)openGallery:(id)sender;
@end
ViewController.m (solo le parti rilevanti)
-(IBAction)sendImage:(id)sender
{
if(self.secondView == nil)
{
SecondView *secView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secView;
secView.imgView.image = selectedImage.image;
}
[self.navigationController pushViewController:secondView animated:YES];
}
-(IBAction)openGallery:(id)sender
{
picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:picker animated:YES];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *) Picker
{
[Picker dismissModalViewControllerAnimated:YES];
}
- (void)imagePickerController:(UIImagePickerController *) Picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Save the image
selectedImage.image = [info objectForKey:UIImagePickerControllerOriginalImage];
[Picker dismissModalViewControllerAnimated:YES];
}
In un altro post ho letto che un altro approccio è stato quello di fare questo:
-(IBAction)sendImage:(id)sender
{
if(self.secondView == nil)
{
SecondView *secView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secView;
[secView setImage:selectedImage.image];
}
[self.navigationController pushViewController:secondView animated:YES];
}
e quindi nella seconda vista.h
-(void)setImage:(UIImage *)image;
e .m
-(void)setImage:(UIImage *)image
{
[imgView setImage:image];
}
Ma entrambi gli approcci si traduce in un UIImageView vuoto ... Allora, qual è l'approccio corretto per fare questo?
Grazie in anticipo!
EDIT
SecondView è abbastanza semplice in questo momento ... (nel codice scritto cerco di seguire il metodo due)
@interface SecondView : UIViewController
{
UIImageView *imgView;
}
@property (nonatomic, retain) IBOutlet UIImageView *imgView;
-(void)setImage:(UIImage *)image;
@end
@implementation SecondView
@synthesize imgView;
-(void)setImage:(UIImage *)image
{
[imgView setImage:image];
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
SOLUZIONE Va bene ... Sono andato indietro al primo metodo e apportato alcune modifiche che alla fine ha funzionato ...
-(IBAction)sendImage:(id)sender
{
if(self.secondView == nil)
{
SecondView *secView = [[SecondView alloc] initWithNibName:@"SecondView" bundle:[NSBundle mainBundle]];
self.secondView = secView;
secView.theImage = selectedImage.image;
}
[self.navigationController pushViewController:secondView animated:YES];
}
E in SecondView, ho creato UIImage * theImage - quindi ho impostato [imgView setImage: theImage]; in viewDidLoad, che ha lavorato ...
prega di inserire il codice di classe SecondView – Ganzolo
E 'stato aggiunto ora :) ma io avevo già mostrato l'unica aggiunta nel codice a parte la serie ... (si prega di notare, il secondView pubblicato è dove ho prova il secondo metodo menzionato ...) – user969043
Grazie! Passare UIImage vs UIImageView dal controller di visualizzazione originale al secondoViewController ha funzionato anche per me. Forse perché UIImageView sul secondo VC era un IBOutlet che non avrebbe funzionato. – LevinsonTechnologies