尝试使用带有segue的set来设置属性

时间:2012-07-28 13:55:13

标签: objective-c ios storyboard

我正在尝试在我的类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

1 个答案:

答案 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";
...
}