我想在UIView
内显示一张图片。在Interface Builder中,UIView
是根,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 :(得分:8)
UIViewController
的{{3}}方法的iOS文档声明:
... 您指定的nib文件不会立即加载。它是在第一次访问视图控制器的视图时加载的。如果要在加载nib文件后执行其他初始化,请覆盖
viewDidLoad
方法并在那里执行任务。 ...
没有立即加载nib / xib文件的结果(即它使用所谓的延迟加载)意味着当你使用TestView控制器时,imageView IBOutlet
属性仍为零尝试在第一个示例中设置它。
在您的第二个示例中,您将在{<1}}中将其设置为加载nib / xib文件后的,因此它可以按预期工作。