2016-05-25 3 views
0

UIImageをFirst View ControllerからSecond View Controllerに渡そうとしていますが、これはSecond Viewに表示されません。どうして?OBJECTIVE-C:UIImageのPushViewControllerが機能しません

FirstController.mでの私のコード:

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

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

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

SecondController.hでの私のコード:

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

SecondController.mでの私のコード:

@implementation SecondController 

@synthesize imgCard; 

答えて

3

あなたImageViewの上に設定したい画像はあなたがprapareに画像を渡す必要はありませんよりも、あなたのAssets.xcassetsまたはプロジェクトフォルダ内にある場合sagueはちょうど以下のように使います。 FirstController.mで

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

:SecondController.hで

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

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

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

:SecondController.mで

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

@implementation SecondController 

@synthesize imageVar,imgCard; 

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

ありがとうございました!これは解決策です:) @Subhash Sharma – David

+0

:)ハッピーコーディング –

1

のあなたの最初の行コードが間違っています。 2番目のビューコントローラを初期化するための正しい方法は次のとおりです。

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

ありがとうございますが、私の問題は解決されません。 @stefos – David

+0

SecondのimageViewで画像を直接設定しないでください。画像のみを渡します。 SecondControllerのviewDidLoadでimageViewを設定します。 – stefos

2

imgCardは秒までnilになりますondビューコントローラのビューが読み込まれました。これは、View Controllerを押すまで発生しません。ビューコントローラのビューは作成されず、アウトレットは必要になるまで接続されません。

2つのオプションがあります。

  • pushViewControllerコール(つまり、視覚的なグリッチの原因になりますかどうかわからない)
  • SecondControllerimageプロパティを追加して、それを設定した後、画像ビューの画像を設定します。 viewDidLoadSecondControllerの場合は、imgCard.image = self.image;と設定します。
関連する問題