[英]“Cannot assign image to *UIImageView*” Error in SWIFT (iOS)
我試圖在視圖中找到UIImageViews並根據標簽為它們分配幾個圖像。 但不幸的是,我無法將圖像分配給數組中的UIImageView變量。 我無法真正解決問題。
下面是我寫的代碼。
var imageViewSlot = UIImageView()
for imageViewSlot in self.view.subviews
{
if (imageViewSlot .isMemberOfClass(UIImageView))
{
for i in 1...imagePieces.count
{
if (imageViewSlot.tag == i)
{
imageViewSlot.image = imagePieces[i] as? UIImage //Error in this line
}
}
}
}
任何幫助將不勝感激。 提前致謝。
var imageViewSlot = UIImageView()
你把它作為全局,你在in語句中使用相同的名稱是主要問題。 因此,它不知道這是什么類型的對象,所以我們必須提到這樣(imageViewSlot as UIImageView).image = image
嘗試下面的代碼,並檢查此鏈接
for imageViewSlot in self.view.subviews
{
if (imageViewSlot .isMemberOfClass(UIImageView))
{
for i in 1...imagePieces.count
{
if (imageViewSlot.tag == i)
{
var image = UIImage(named: imagePieces[i])
(imageViewSlot as UIImageView).image = image
}
}
}
}
首先,您正在使用超出其邊界的索引訪問您的數組。 你的for
循環應該從0
到最多, 不包括imagePieces.count
。
for i in 0..<imagePieces.count
{
if (imageViewSlot.tag == i)
{
imageViewSlot.image = imagePieces[i] as? UIImage //Error in this line
}
}
其次,看起來你正試圖在你的self.view.subviews
找到一個UIImageView
,對吧? 當你這樣做時,你將imageViewSlot
設置為UIView
。 我看到你正在檢查它是否是類UIImageView
的成員,但實際上並沒有改變imageViewSlot
變量的類型。 您需要將imageViewSlot
轉換為UIImageView
才能設置image
屬性。
我這樣做(未經測試):
// Note, you don't need to declare var imageViewSlot first
for subview in self.view.subviews {
if let imageViewSlot = subview as? UIImageView {
for i in 0..<imagePieces.count {
if imageViewSlot.tag == i {
imageViewSlot.image = imagePieces[i] as UIImage
}
}
}
}
如果你的標簽設置正確,那么你真的不需要那個內部for
循環。 您可以將其簡化為以下內容:
for subview in self.view.subviews {
if let imageViewSlot = subview as? UIImageView {
if imageViewSlot.tag >=0 && imageViewSlot < imagePieces.count {
imageViewSlot.image = imagePieces[imageViewSlot.tag] as UIImage
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.