我正在尝试将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;
答案 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"];
...