簡體   English   中英

如何從 url 下載圖像並附加 UIImageView 數組 (iOS)

[英]How download image from url and append UIImageView array (iOS)

@IBOutlet weak var imgView: UIImageView!
@IBOutlet weak var imgPicker: UIPickerView!

let PICKER_VIEW_COLUMN = 1
let PICKER_VIEW_HEIGHT: CGFloat = 80
var imageArray = [UIImage?]()
var imageFileName = ["dongbinggo1.png","dongbinggo2.png","dongbinggo3.png"]

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    for i in 0..<imageFileName.count{
        downLoadItems(imageFileName[i])
    }
    imgView.image = imageArray[0]
}
func downLoadItems(_ imgName: String){
    let url = URL(string: "http://(myIP)/test/\(imgName)")!
    let defaultSession = Foundation.URLSession(configuration: URLSessionConfiguration.default)

    let task = defaultSession.dataTask(with: url){(data, response, error) in
        if error != nil{
            print("Failed to download data")
        }else{
            DispatchQueue.main.async{
                let image = UIImage(data: data!)!
                self.imageArray.append(image)
            }
            print("Data is downloaded")
        }
    }
    task.resume()
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return PICKER_VIEW_COLUMN
}
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
    return PICKER_VIEW_HEIGHT
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return imageFileName.count
}

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
    let imageView = UIImageView(image: imageArray[row])
    imageView.frame = CGRect(x:0,y:0,width: 50, height: 50)

    return imageView
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    imgView.image = imageArray[row]
}

我想從 url 下載圖像並插入UIPickerView並選擇 pick 然后在UIImageView顯示。 我認為在下載所有圖像后附加UIImage Array。

我不知道如何插入代碼以及在哪里插入。

您嘗試使用MAX_ARRAY_NUM但您的imageFileName僅包含 3 個文件名。 imageArray是一個空數組,但您嘗試獲取數組中不存在的0索引值。

這些是主要問題。

var imageArray = [UIImageView?]()
var imageFileName = ["dongbinggo1.png","dongbinggo2.png","dongbinggo3.png"]

 for i in 0..<imageFileName.count {
      downLoadItems(imageFileName[i])
 }

if let imgView = imageArray[0] { 
     self.imgView = imgView
 } 

暫無
暫無

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

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