2011-02-10 64 views
2

我想要在UIView内显示图像。在Interface Builder中,UIView是根,UIImageView是它的孩子。当属性设置得太早时UIImageView不显示图像

视图连接到视图控制器的看法出路,并且图像视图连接到图像视图插座:

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

如果我尝试设置的UIImageView图像属性是可见之前,图像没有按没有出现。

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

但是,如果我的形象传递给控制器​​和viewDidLoad设置图像性能,图像变得可见。

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 2011-02-10 08:18:29

+0

@meronix图像是我的TestView类的一个属性 – Undeadlegion 2011-03-15 06:12:23

回答

8

的iOS版的文件为UIViewControllerinitWithNibName:bundle:法规定:

... 指定的笔尖文件没有被加载的时候了。它在第一次访问视图控制器的视图时加载。如果您想在加载nib文件后执行额外的初始化,请覆盖viewDidLoad方法并在那里执行任务。 ...

没有被立即加载笔尖/厦门国际银行文件的后果(例如,它采用所谓的懒加载)意味着你TestView控制器的ImageView的IBOutlet财产仍然是零,当你尝试将其设置在你的第一个例子。

在你的第二个例子你将它设置在viewDidLoad被称为笔尖/厦门国际银行文件加载之后,因此它可以作为你的期望。