2011-10-26 28 views
0

我有一個UITableViewCell子類,沒有什麼奇特的。我添加了幾個標籤和一個UIImageView。所有插座都連接到表格視圖單元(視圖) - 而不是文件的所有者。如果我將它們附加到文件所有者,那麼加載關於不符合鍵值的錯誤並將它們附加到表視圖單元格實際上可以解決該問題。我可以正確地處理標籤。在tableview單元格子類UIImageView不工作IBOutlet

但是,我的一個IBOutlets現在沒有正確連接:一個UIImageView。 IBOutlet已經建立,標籤的作用並不能完成圖像視圖。這裏有一些代碼:

[[cell imageView] initWithImage:thumbnail]; 
[self.view addSubview:[cell imageView]]; 

想象一下,縮略圖是一個UIImage,它不是零。 cell.imageView也是零。最上面一行沒有在正確的地方顯示圖像(我在xib中設置了它),儘管底線實際上是將圖像添加到屏幕 - 不在正確的位置。

那麼這裏發生了什麼?如何正確地將插座插入文件的所有者(無鍵值兼容性投訴)或通過表格視圖單元正確連接插座。任何幫助是極大的讚賞!

親切的問候,

雷因德

回答

0

這條線:

[[cell imageView] initWithImage:thumbnail]; 

聽起來很奇怪。如果imageView已經被初始化,例如那麼不需要再次重新初始化(由於不希望的結果,因爲init必須在對象的生命中被調用一次)。相反,如果imageView實例尚未成爲alloc-init,那麼[cell imageView]將爲零,而initWithImage:調用根本不起作用。

所以你說cell.imageView不是零,所以你的init methodWithImage:方法可能會改變圖像視圖的框架,這就解釋了爲什麼它被移動到別的地方而不是你的xib(可能它已經放置在單元格視圖原點)。不要忘記從xib加載圖像時,調用initWithCoder:方法。

你可以做什麼的轉轉此代碼(未測試),其與新電池替換現有電池:

CGRect oldFrame = cell.imageView.frame; 
UIImageView *newImageView = [[[UIImageView alloc] initWithImage:thumbnail] autorelease]; 
newImageView.frame=oldFrame; 
[self.view addSubview:newImageView]; 
cell.imageView=newImageView; 

當然,這個解決方案是不優雅,這將是你更好可以解決您的KVC問題。你爲什麼得到這些錯誤的原因並不清楚,我應該看到代碼和xib。它不明白你的意思是「不訣竅」。不應該有詭計,除非你會受到像這樣的錯誤。