如何在 swift 3 中将图像从服务器加载到 tableView 单元格?
Posted
技术标签:
【中文标题】如何在 swift 3 中将图像从服务器加载到 tableView 单元格?【英文标题】:How to load image from server to tableView cell in swift 3? 【发布时间】:2017-01-06 17:26:30 【问题描述】:我正在尝试将新闻加载到 tableView 中,我做到了。如何将图像加载到标题旁边的 tableView 单元格?
我希望将图片加载到标题的左侧。
主持人: https://api.sis.kemoke.net/news
图片网址变量:imgUrl
这是我的课:
import Alamofire //Framework for handling http requests
import UIKit
/*A class which will process http requests, receive the news as string and fill the array with such data which will be displayed in a table*/
class NewsTableViewController: UITableViewController
//Custom struct for the data
struct News
let title : String
let text : String
let link : String
init(dictionary: [String:String])
self.title = dictionary["title"] ?? ""
self.text = dictionary["text"] ?? ""
self.link = dictionary["link"] ?? ""
//Array which holds the news
var newsData = [News]()
// Download the news
func downloadData()
Alamofire.request("https://api.sis.kemoke.net/news").responseJSON response in
print(response.request) // original URL request
print(response.response) // HTTP URL response
print(response.data) // server data
print(response.result) // result of response serialization
//Optional binding to handle exceptions
self.newsData.removeAll() // clean the data source array
if let json = response.result.value as? [[String:String]]
for news in json
self.newsData.append(News(dictionary: news))
self.tableView.reloadData()
override func viewDidLoad()
super.viewDidLoad()
downloadData()
override func numberOfSections(in tableView: UITableView) -> Int
return 1
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return newsData.count
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let news = newsData[indexPath.row]
cell.textLabel?.text = news.title
return cell
【问题讨论】:
您过去搜索和查看过哪些相关问题? 阅读UITableViewCell
的文档,您可能会发现类似于textLabel
的内容可以帮助您。
在 swift 3 和 2.2 中检查这个:***.com/a/37019507/3400991@Adin Ljudina
【参考方案1】:
不知何故,做这样的事情的“最佳实践”是为每个新闻创建一个自定义单元格(UITableViewCell)和一个模型类。这种情况是每个“快速教程网站”都有一些例子。 您可以在以下链接中找到其中一些:
http://www.kaleidosblog.com/swift-uitableview-load-data-from-json
https://grokswift.com/uitableviewcell-images-from-api/
【讨论】:
【参考方案2】:斯威夫特 3 这段代码是tableview,使用tableview单元格中的图像和标签打印获取api Json解析数据
func tableView(_tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 让 cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell
var dict = array[indexPath.row]
cell.lbl1.text = dict["address"] as? String
cell.lbl2.text = dict["ad_created_date"] as? String
cell.lbl3.text = dict["phone_number"] as? String
cell.lbl4.text = dict["id"] as? String
cell.lbl5.text = dict["ad_zip"] as? String
let imageUrlString = dict["ad_path"]
let imageUrl:URL = URL(string: imageUrlString as! String)!
let imageData:NSData = NSData(contentsOf: imageUrl)!
cell.img.image = UIImage(data: imageData as Data)
return cell
【讨论】:
以上是关于如何在 swift 3 中将图像从服务器加载到 tableView 单元格?的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中将图像和标题从数组(image_url)迭代和加载到 ViewController 中的正确方法
如何在 Swift 3 中将图像添加到 UIAlertbox?
如何使用 Swift 3 将图像从 Rest Api 加载到视图中加载方法