Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么我不能设置图像?_Ios_Swift_Uitableview_Swift3_Uiimageview - Fatal编程技术网

Ios 为什么我不能设置图像?

Ios 为什么我不能设置图像?,ios,swift,uitableview,swift3,uiimageview,Ios,Swift,Uitableview,Swift3,Uiimageview,为什么我不能设置图像 class ViewController:UIViewController,UITableViewDelegate,UITalbeViewDataSource{ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentif

为什么我不能设置图像

class ViewController:UIViewController,UITableViewDelegate,UITalbeViewDataSource{
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell",for: indexPath) as! CustomTableViewCell
    cell.setCell()
    return cell
  }
}


class CustomTableViewCell:UITableViewCell{
  @IBOutlet weak var artworkImage:UIImageView!

  func setCell(){
    let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
    let url = URL(strings: urlStr)
    let data = try? Data(contentsOf: url!)

    if let imageData = data {
      self.artworkImage.image = UIImage(data: imageData)
    }
  }
}
我想在TableView中显示URL目标的图像,但该图像不显示


此图像是日志。

您正试图在后台线程中设置图像,因为您收到此日志。在imageView上显示图像时,需要使用主线程,如:

if let imageData = data {
    DispatchQueue.main.async(execute: {
        self.artworkImage.image = UIImage(data: imageData)
    })  
}

您正试图在后台线程中设置图像,因为您收到了此日志。在imageView上显示图像时,需要使用主线程,如:

if let imageData = data {
    DispatchQueue.main.async(execute: {
        self.artworkImage.image = UIImage(data: imageData)
    })  
}

对于图像,尤其是单元格上的ImageView,请尝试此库:-

设URLString=self.items[indexPath.row]

让URL=NSURL(string:URLString)


cell.imageView.hnk_setImageFromURL(URL)

对于图像,尤其是单元格上的imageView,请尝试此库:-

设URLString=self.items[indexPath.row]

让URL=NSURL(string:URLString)

cell.imageView.hnk_setImageFromURL(URL)

单元格:

class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var artworkImage:UIImageView!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}
func setCell(){
    let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
    let url = URL(string: urlStr)
    let data = try? Data(contentsOf: url!)
    DispatchQueue.main.async {
        if let imageData = data {
            self.artworkImage.image = UIImage(data: imageData)
        }        }

}
override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}
也不要忘记。设置
应用程序传输安全设置
。 祝你好运

单元格:

class CustomTableViewCell: UITableViewCell {
@IBOutlet weak var artworkImage:UIImageView!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}
func setCell(){
    let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
    let url = URL(string: urlStr)
    let data = try? Data(contentsOf: url!)
    DispatchQueue.main.async {
        if let imageData = data {
            self.artworkImage.image = UIImage(data: imageData)
        }        }

}
override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}
也不要忘记。设置
应用程序传输安全设置
。 祝你好运

setCell()
应该是这样的

func setCell(){
    let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
    let url = URL(string: urlStr)
    artworkImage.image = UIImage(named: "ic_placeholder")

    DispatchQueue.global(qos: .background).async {
        let data = try? Data(contentsOf: url!)
        DispatchQueue.main.async {
            if let imageData = data {
                self.artworkImage.image = UIImage(data: imageData)
            }
        }
    }
}
图像应该在后台线程上下载,否则UI将被阻止。下载图像后,您需要在主线程中进行更改

最好还有一个占位符图像。

setCell()
应该是这样的

func setCell(){
    let urlStr = "http://is3.mzstatic.com/image/thumb/Music20/v4/d4/6c/af/d46caf98-ff6c-1707-135d-58d6ed9ea6a2/source/500x500bb.jpg"
    let url = URL(string: urlStr)
    artworkImage.image = UIImage(named: "ic_placeholder")

    DispatchQueue.global(qos: .background).async {
        let data = try? Data(contentsOf: url!)
        DispatchQueue.main.async {
            if let imageData = data {
                self.artworkImage.image = UIImage(data: imageData)
            }
        }
    }
}
图像应该在后台线程上下载,否则UI将被阻止。下载图像后,您需要在主线程中进行更改


还有,最好有一个占位符图像。

您是否调用函数“setCell”?对不起。我将把它添加到我的问题中。你调用函数“setCell”吗?对不起。我将把它添加到我的问题中。图片已经在主线程上下载了。不需要再次调用主线程。映像已在主线程上下载。不需要再次调用主线程。附加:最好缓存图像。附加:最好缓存图像。