[英]UIImageView not displaying image when property is set too early
我想要在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;
}
是什么導致圖像在第一個場景中不顯示?
UIViewController
的initWithNibName:bundle:方法的iOS文檔聲明:
...您指定的nib文件不會立即加載。 它是在第一次訪問視圖控制器的視圖時加載的。 如果要在加載nib文件后執行其他初始化,請覆蓋
viewDidLoad
方法並在那里執行任務。 ...
nib / xib文件未立即加載的結果(即它使用所謂的延遲加載 )意味着當您嘗試在第一個示例中設置它時,TestView控制器中的imageView IBOutlet
屬性仍為nil。
在第二個示例中,您將在加載nib / xib文件后調用的viewDidLoad
中設置它,因此它可以按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.