我尝试将网址中的图片添加到UIImageView
。我没有错误,但屏幕上没有显示任何错误。
我在这里做错了什么?
我对来自.xcassets
的图片使用了相同的方法,但它工作正常,但它无法通过远程网址工作。
以下是我的文件:
RelatedCollectionViewCell.swift
class RelatedCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var related: UIImageView!
}
ViewController.swift
var images = [AnyObject]()
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return images.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
do {
try images.append(UIImage(data: Data(contentsOf: URL(string:"https://i.ytimg.com/vi/kWxHV9jkwSA/hqdefault.jpg")!))!)
} catch {
print(error)
}
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "RelatedCollectionViewCell", for: indexPath) as! RelatedCollectionViewCell
cell.related.image = images[indexPath.row] as? UIImage
return cell
}
答案 0 :(得分:0)
这不起作用,因为在执行collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int)
时,images
数组中的项目为零。 (因为你从一个至少需要一点时间的URL加载它们。)
因此,在完成下载图像后,必须通过添加以下内容重新加载:
collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
....
self.reloadData()
}
如果你在正手上知道这个数量,你当然可以在一个部分给它一定数量的物品:
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5//whatever amount
}
当然,如果没有互联网连接,最好异步加载图像以阻止它冻结您的应用程序,但这不是问题的一部分。
答案 1 :(得分:0)
这是因为首次加载时你的数组images.count = 0
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
因为Images数组为空
如果您的商品数量为0,则您的应用不会输入db.execute("INSERT INTO chapters (chapter, book_id) VALUES (?, ?)", [request.form['chapter']], book_id)
。