2011-02-10 5 views
2

UIViewの中に表示したい画像があります。 Interface Builderでは、UIViewがルートになり、UIImageViewがその子になります。プロパティが早すぎるとUIImageViewが画像を表示しない

ビューコントローラのビュー出口を見るに接続され、画像表示が画像表示コンセントに接続されている:

@property (nonatomic, retain) IBOutlet UIImageView *imageView; 

それは可視だ前UIImageViewの画像プロパティを設定しようとすると、画像のdoesn表示されません。しかし、私は、コントローラに画像を渡し、viewDidLoadの画像プロパティを設定する場合

TestView *testView = [[TestView alloc] initWithNibName:@"TestView" bundle:nil]; 
testview.imageView.image = [logos objectAtIndex:indexPath.row]; 
[self.navigationController pushViewController:testView animated:YES]; 

は、画像が見えるようになります。

TestView *testView = [[TestView alloc] initWithNibName:@"TestView" bundle:nil]; 
testview.image = [logos objectAtIndex:indexPath.row]; 
[self.navigationController pushViewController:testView animated:YES]; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    imageView.image = image; 
} 

最初のシナリオで画像が表示されない原因は何ですか?

+0

私には明らかなことがありません:TestViewは(UIViewから継承しています)、そうですか?しかし、あなたのコードに ".image"プロパティをどのように設定できますか? – meronix

+0

@meronix imageは私のTestViewクラスのプロパティです – Undeadlegion

答えて

8

UIViewControllerinitWithNibName:bundle:方法のためのiOSのドキュメントは、と述べている:あなたが指定したのnibファイルはすぐにロードされていない

... 。ビューコントローラのビューに初めてアクセスするときに読み込まれます。 nibファイルのロード後に追加の初期化を実行する場合は、viewDidLoadメソッドをオーバーライドしてそこでタスクを実行します。 ...

すぐにロードされていないペン先/ XIBファイルの結果(すなわち、それは、いわゆる遅延ロードを使用しています)あなたがそれを設定しようとすると、あなたのTestViewにコントローラでImageViewのIBOutletプロパティがまだゼロであることを意味しあなたの最初の例。

viewDidLoadには、の後にと設定されているため、期待通りに動作します。

+0

ペン先が遅れて読み込まれていることは間違いありませんでした。今、完璧な意味合いがあります。ありがとうございました。 – Undeadlegion

関連する問題