2012-02-29 7 views
5

मैं फ़ोटो गैलरी से उपयोगकर्ता से एक छवि हो रही है, और मैं एक दूसरे को देखने के लिए इसे पारित करना चाहते हैं एक दृश्य से छवि पासिंग ...एक और

मैं पढ़ा है कि मैं सक्षम होना चाहिए बस कुछ इस तरह करना है:

secView.imgView.image = selectedImage.image; 

दूसरे दृश्य पर मेरे UIImageView स्थापना मेरी UIImageView ... से छवि लेकिन दूसरे दृश्य है सिर्फ खाली में UIImageView होने के लिए ...

मेरे कोड यह है ...

,210

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 (केवल प्रासंगिक भागों)

-(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]; 
} 

एक और पोस्ट में मैंने पढ़ा है कि एक और दृष्टिकोण यह करने के लिए किया गया था:

-(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]; 
} 

और फिर दूसरेदृश्य में।

-(void)setImage:(UIImage *)image; 

और मीटर

-(void)setImage:(UIImage *)image 
{ 
    [imgView setImage:image]; 
} 

लेकिन एक खाली UIImageView में दोनों दृष्टिकोण परिणाम ... तो ऐसा करने के लिए सही दृष्टिकोण क्या है?

अग्रिम धन्यवाद!

संपादित

SecondView पल में काफी सरल है ... (पोस्ट कोड मैं कोशिश में और पालन दो विधि)

@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 

समाधान ठीक है ... वापस चला गया पहली विधि के लिए और कुछ बदलाव किए जो अंततः काम करते थे ...

-(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]; 
} 

और दूसरे दृश्य में, मैंने UIImage * Image बनाया - फिर मैंने सेट किया [imgView setImage: theImage]; viewDidLoad, जो काम किया ...

+0

वर्ग के कोड SecondView – Ganzolo

+0

अब यह जोड़ दिया गया है डाल कृपया :) लेकिन मैं पहले से ही केवल अलग मानक से कोड में इसके अलावा दिखाई थी ... (कृपया ध्यान दें, secondView तैनात जहां है मैं उल्लिखित दूसरी विधि का प्रयास करें ...) – user969043

+0

धन्यवाद! मूल दृश्य नियंत्रक से UIImage बनाम UIImageView को दूसरे व्यू कंट्रोलर तक पास करने के लिए भी मेरे लिए काम किया। शायद क्योंकि दूसरी आईवीएम पर UIImageView एक आईबीओलेट था, यह काम नहीं करेगा। – LevinsonTechnologies

उत्तर

7

यह समस्या हल पासिमेज {

Second_ViewController *select_main =[[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"Second_ViewController"]; 
    select_main.tt_image=_bg_imageview.image; 
    [[self navigationController] pushViewController:select_main animated:YES]; 

}

// दूसरा ViewController UIImage वस्तु पारित:

  • (शून्य) viewDidLoad {

    _bg_imageview.image = _bb_image; }

0

में मैं मैं इस समस्या पाया लगता है:

अपनी कक्षा secondView में, अपने UIImageView निब फ़ाइल में वस्तु UIImageView से जुड़ा नहीं है।

आप ऐसा ही कुछ होना चाहिए: यदि दृश्य को सही ढंग से नोक से जुड़ा है आप यह कर सकते हैं

IBOutlet UIImageView *imgView; 

जांचने के लिए:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
     [imgView setBackgroundColor:[UIColor redColor]]; 
    } 
    return self; 
} 

आपकी समस्या दिलचस्प है मुझे अगर हमें बताएं यह काम नहीं करता है मैं गहरी जांच करूँगा।(शून्य) - :

-(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]; 
} 

SecondView:

@interface SecondView : UIViewController 
{ 
    UIImageView *imgView; 
    UIImage *theImage; 
} 

@property (nonatomic, retain) IBOutlet UIImageView *imgView; 
@property (nonatomic, retain) UIImage *theImage; 

-(void)setImage:(UIImage *)image; 

@end 

और secondView के मीटर में:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    [imgView setImage:theImage]; 
} 
+0

दरअसल, मैं @property (nonatomic, retain) में आईबीओलेटलेट बनाते हैं IOmageView * imgView; :) तो यह त्रुटि नहीं है ... दुर्भाग्य से :) बस सुनिश्चित करने के लिए, मैंने पृष्ठभूमि रंग बदलने के लिए कोड जोड़ा, जो काम किया ... – user969043

+0

ओप्स मैंने इसे नहीं देखा। मैं थोड़ा गहराई से जांच करूंगा :) – Ganzolo

+0

क्या आप वाकई अपने चुने गए Image.image! = Nil? – Ganzolo