如何将图像解析为Tableview单元格?

时间:2017-01-21 14:16:32

标签: ios swift uitableview uiimageview alamofire

导入UIKit 进口Alamofire 导入SwiftyJSON

class Home:UIViewController,UITableViewDelegate,UITableViewDataSource {

var tableView: UITableView = UITableView()
var arrRes = [[String:AnyObject]]()

override func viewDidLoad() {
    super.viewDidLoad()

    tableView = UITableView(frame: UIScreen.main.bounds, style: UITableViewStyle.plain)
    tableView.separatorStyle = UITableViewCellSeparatorStyle.none
    tableView.delegate   = self
    tableView.dataSource = self
    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
    self.view.addSubview(self.tableView)

    // sort for popular songs
    Alamofire.request("http://vocadb.net/api/songs/top-rated?filterBy=Popularity").responseJSON { (responseData) -> Void in
        if((responseData.result.value) != nil) {
            let swiftyJsonVar = JSON(responseData.result.value!)

            if let resData = swiftyJsonVar[].arrayObject {
                self.arrRes = resData as! [[String:AnyObject]]
            }
            if self.arrRes.count > 0 {
                self.tableView.reloadData()
            }
        }
    }
}



func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "cell")
    var dict = arrRes[indexPath.row]
    cell.textLabel?.textColor = .white
    cell.detailTextLabel?.textColor = .white
    cell.textLabel?.text = dict["defaultName"] as? String // use default name for each song
    cell.detailTextLabel?.text = dict["artistString"] as? String // use artist string and the second line of text
    cell.imageView?.image = dict["coverPictureMime"] as? UIImage

    return cell
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return arrRes.count

}

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
    cell.contentView.backgroundColor = UIColor(red:0.16, green:0.16, blue:0.16, alpha:1.0)
}

}

好的,上面是我的代码。它现在显示的是UITableView,其中包含歌曲和艺术家的名字。我的目标是在单元格的左侧显示专辑封面。有关如何以编程方式执行此操作的任何想法?

我已经尝试创建了一个imageview并将其返回到单元格中但是图像甚至不会显示设置虚拟图像以查看是否解析是错误的。

1 个答案:

答案 0 :(得分:0)

您需要先从dict参数" coverPictureMime"中的网址下载图片。然后将该图像放入cell.imageView?.image。 以下链接将帮助您实现此目的: Download image from URL