Estoy recibiendo una imagen del usuario de la galería de fotos, y quiero pasarlo a un otro punto de vista ...paso de imagen de una vista a otra
He leído que yo debería ser capaz simplemente hacer algo como esto:
secView.imgView.image = selectedImage.image;
ajuste de mi UIImageView en el segundo fin de ser la imagen de mi UIImageView ... Pero el UIImageView en el segundo punto de vista es simplemente vacío ...
mi el código es este ...
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 (sólo las partes pertinentes)
-(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];
}
En otro post he leído que era otro enfoque para hacer esto:
-(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];
}
y luego en la segunda vista.h
-(void)setImage:(UIImage *)image;
y .m
-(void)setImage:(UIImage *)image
{
[imgView setImage:image];
}
Pero ambos enfoques produce un vacío ... UIImageView Entonces, ¿qué es el enfoque correcto para hacer esto?
¡Gracias de antemano!
EDITAR
SecondView es bastante simple en el momento ... (en el código publicado Trato de seguir el método dos)
@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
SOLUCIÓN bien ... Volvimos para el primer método e hizo algunas modificaciones que finalmente funcionaron ...
-(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];
}
Y en la segunda Vista, creé UIImage * theImage - luego configuré [imgView setImage: theImage]; en viewDidLoad, que trabajó ...
favor coloque el código de la clase SecondView – Ganzolo
Se ha añadido ahora :) Pero ya habían demostrado la única adición en el código aparte de la norma ... (tenga en cuenta, la secondView publicada en el que se prueba el segundo método mencionado ...) – user969043
¡Gracias! Pasar UIImage vs UIImageView desde el controlador de vista original al segundo ViewController funcionó para mí también. Tal vez porque UIImageView en el segundoVC era un IBOutlet, no funcionaría. – LevinsonTechnologies