![](/img/trans.png)
[英]How to download the image from URL array and append it to an array one by one Swift
[英]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.