我正在尝试在我的类IDViewController中设置bigImage,cadImage和number。但是当我使用下面的代码时,这些从未设置过。显然这些属性合成得很好,并且在我的故事板上的场景中。我在这里错过了什么吗?
ViewController.m
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"leftMainSegue"])
{
IDViewController *vc = [segue destinationViewController];
[vc.bigImage setImage:[UIImage imageNamed:@"1.png"]];
[vc.number setText:@"01"];
}
}
IDViewController.h
@interface IDViewController : UIViewController
{
UIImageView *bigImage;
UIImageView *cadImage;
UILabel *number;
}
@property (nonatomic) UIImageView *bigImage;
@property (nonatomic) UIImageView *cadImage;
@property (nonatomic) UILabel *number;
@end
答案 0 :(得分:1)
即使IDViewController
被调用的时间prepareForSegue:
初始化,它可能还没有加载其视图,因此也没有加载您尝试更新的子视图。
最好将图像和文本设置为控制器直接拥有的属性,然后将它们设置为viewDidLoad:
中的视图。
类似......(警告!未经编译器检查!)
在IDViewController.h中:
@property (nonatomic, strong) UIImage *inputImage;
@property (nonatomic, strong) NSString *inputString;
在IDViewController.m中:
@synthesize inputImage = _inputImage;
@synthesize inputString = _inputString;
...
- (void)viewDidLoad {
...
self.bigImage.image = self.inputImage;
self.number.text = self.inputString;
...
}
在ViewController.m中:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
...
vc.inputImage = [UIImage imageNamed:@"1.png"];
vc.inputString = @"01";
...
}