OBJECTIVE-C:带UIImage的PushViewController不起作用

时间:2016-05-25 10:23:15

标签: ios objective-c uiimage pushviewcontroller

我正在尝试将UIImage从第一视图控制器传递到第二视图控制器,但这不会出现在第二视图中。为什么呢?

我在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 个答案:

答案 0 :(得分:3)

如果要在ImageView上设置的图像位于Assets.xcassets或项目文件夹中,则不需要在prapare中传递图像以便使用sague,只需按照以下方式使用;

imgCard.image = [UIImage imageNamed:@"image.png"];
在FirstController.m中

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

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

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

@property (nonatomic, strong) IBOutlet UIImageView *imgCard;
@property   UIImage *imageVar;
在SecondController.m中

@implementation SecondController 

@synthesize imageVar,imgCard;

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

答案 1 :(得分:2)

imgCard将为nil,直到加载了第二个视图控制器的视图。在推动视图控制器之前,这种情况不会发生。视图控制器的视图未创建,插座未连接,直到需要为止。

您有两种选择。

  • pushViewController电话后设置图片视图的图像(不确定是否会导致视觉故障)
  • image属性添加到SecondController并设置该属性。在viewDidLoad的{​​{1}}中,设置SecondController

答案 2 :(得分:1)

您的第一行代码是错误的。初始化第二个视图控制器的正确方法是:

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