0

クラス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
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 に答える