2016-05-25 11 views
0

Ich versuche, ein UIImage von einem First View Controller an Second View Controller zu übergeben, aber dies erscheint nicht in der zweiten Ansicht. Warum?OBJEKT-C: PushViewController mit UIImage funktioniert nicht

Mein Code in FirstController.m:

SecondController *second = (SecondController *)[self.storyboard instantiateViewControllerWithIdentifier:@"SBSecondController"]; 

second.imgCard.image = [UIImage imageNamed:@"image.png"]; 

[self.navigationController pushViewController:second animated:YES]; 

Mein Code in SecondController.h:

@property (nonatomic, strong) IBOutlet UIImageView *imgCard; 

Mein Code in SecondController.m:

@implementation SecondController 

@synthesize imgCard; 

Antwort

3

Wenn Bild, das Sie auf Ihrem Image festlegen möchten in Ihrem Assets.xcassets oder in Ihrem Projektordner, als Sie nicht Bild in prapare passieren müssen für Sag einfach wie folgt verwenden;

imgCard.image = [UIImage imageNamed:@"image.png"]; 

in FirstController.m:

SecondController *second= (SecondController*)[self.storyboard instantiateViewControllerWithIdentifier:@"SBSecondController"]; 

second.imageVar = [UIImage imageNamed:@"image.png"]; 

[self.navigationController pushViewController:second animated:YES]; 

in SecondController.h:

@property (nonatomic, strong) IBOutlet UIImageView *imgCard; 
@property UIImage *imageVar; 

in SecondController.m:

@implementation SecondController 

@synthesize imageVar,imgCard; 

-(void)viewDidLoad{ 
[super viewDidLoad]; 
imagCard.image = imageVar; 
} 
+0

Vielen Dank! Das ist die Lösung :) @Subhash Sharma – David

+0

:) Happy Coding –

1

Ihre erste Zeile Code ist falsch. Der richtige Weg, um Ihre zweite View-Controller init ist:

SecondController *second = (SecondController*)[self.storyboard instantiateViewControllerWithIdentifier:@"SBSecondController"]; 
second.imgCard.image = [UIImage imageNamed:@"image.png"]; 
... 
+0

Danke, aber mein Problem ist nicht gelöst. @ stefos – David

+0

Stellen Sie das Bild nicht direkt in Second's imageView ein. Übergeben Sie nur das Bild. Und in SecondController wurde viewDidLoad auf imageView gesetzt. – stefos

2

imgCard wird nil bis zur sec Die View-Controller-Ansicht wurde geladen. Dies geschieht erst, wenn Sie den View-Controller drücken. Die Ansicht eines View-Controllers wird nicht erstellt, und die Ausgänge sind nicht verbunden, bis sie benötigt werden.

Sie haben zwei Möglichkeiten.

  • der Bildansicht des Bildes nach dem pushViewController Anruf ein (nicht sicher, ob eine visuelle Glitch wenn das verursacht)
  • eine image Eigenschaft SecondController hinzufügen und festlegen. In viewDidLoad von SecondController, imgCard.image = self.image; einstellen.
Verwandte Themen