簡體   English   中英

當屬性設置得太早時,UIImageView不顯示圖像

[英]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;
}

是什么導致圖像在第一個場景中不顯示?

UIViewControllerinitWithNibName:bundle:方法的iOS文檔聲明:

...您指定的nib文件不會立即加載。 它是在第一次訪問視圖控制器的視圖時加載的。 如果要在加載nib文件后執行其他初始化,請覆蓋viewDidLoad方法並在那里執行任務。 ...

nib / xib文件未立即加載的結果(即它使用所謂的延遲加載 )意味着當您嘗試在第一個示例中設置它時,TestView控制器中的imageView IBOutlet屬性仍為nil。

在第二個示例中,您將在加載nib / xib文件調用的viewDidLoad中設置它,因此它可以按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM