0

我正在尝试在我的类 IDViewController 中设置 bigImage、cadImage 和数字。但是当我使用下面的代码时,这些永远不会设置。显然,这些属性是正确合成的,并且在我的故事板上的一个场景中。我在这里错过了什么吗?

视图控制器.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
4

1 回答 1

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";
...
}
于 2012-07-28T14:04:00.077 回答