簡體   English   中英

SWIFT(iOS)中的“無法將圖像分配給* UIImageView *”錯誤

[英]“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.

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