如何显示从HomeViewController到CartViewController的图像
我在单元格中设置了代码,数据从一个VC传递到另一个VC,
我正在尝试在传递数据时显示图像
按下atcBtn后将数据从HomeVC传递到CartVC时,如何显示图像
我标签中的所有数据都能顺利通过,只是图像数据无法通过
我从堆栈上尝试了几种方法,但在将图像显示在CartVC中时仍然出现错误代码
class CartViewController: UIViewController {
var items: Items!
@IBOutlet weak var cartTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
cartTableView.dataSource = self
cartTableView.delegate = self
}
}
extension CartViewController: UITableViewDataSource, UITableViewDelegate {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return Cart.currentCart.cartItems.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CartCell", for: indexPath) as! CartCell
let cart = Cart.currentCart.CartItems[indexPath.row]
cell.store.text = cart.items.store
cell.lblMealName.text = (cart.items.name)
cell.lblSubTotal.text = "$\(cart.items.cost)"
cell.imageUrl.image = cart.imageUrl // can't figure out how to get this to code to work since it is an Image to String issue
return cell
class CartCell: UITableViewCell {
@IBOutlet weak var lblMealName: UILabel!
@IBOutlet weak var imageUrl: UIImageView!
@IBOutlet weak var lblSubTotal: UILabel!
@IBOutlet weak var lblWeight: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
}
答案 0 :(得分:1)
您发布的代码不太匹配:
例如,在cellForRowAt
的{{1}}中,您正在使用CartViewController
,但是您的代码正在设置:
CartCell
但是您发布的cell.store.text = cart.items.store
中没有store
标签/媒体资源。
但是,由于您对CartCell
类所做的事情非常相似,因此对HomeCell
采取相同的方法。
遵循以下原则:
CartCell
并更改“单元格”
class CartCell: UITableViewCell {
@IBOutlet weak var lblMealName: UILabel!
@IBOutlet weak var imageUrl: UIImageView!
@IBOutlet weak var lblSubTotal: UILabel!
@IBOutlet weak var lblWeight: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
func configure(withItems items: Items) {
//store.text = cart.items.store
lblMealName.text = (items.name)
lblSubTotal.text = "$\(items.cost)"
imageUrl.sd_setImage(with: URL(string: items.imageUrl))
}
}
答案 1 :(得分:0)
这似乎是问题所在
cell.imageUrl.image = cart.imageUrl //无法弄清楚如何获取 该代码可以正常工作,因为它是图像到字符串的问题
并且正如您所指出的,该代码实际上没有任何意义……如果您在购物车对象中存储url(字符串),则无法使用cell.imageUrl将其转换为图像。图片,对吧?
您需要将其分配给网址
cell.imageUrl = cart.imageUrl
当然,这只是将URL传递到单元格。然后,该单元将需要一些智能才能从网址中获取相关的图像。
您的CartCell类的一些伪代码...
cell.store.text = cart.items.store
cell.lblMealName.text = (cart.items.name)
cell.lblSubTotal.text = "$\(cart.items.cost)"
cell.setImageUrlAndDisplayImage( cart.imageUrl )
然后是CartCell类中的函数
func setImageUrlAndDisplayImage( imageUrl: URL) {
self.setImage(with: URL(string: imageUrl))
}
或者,当然,您可以直接将图像直接分配给CartCell图像属性(如果有)。
cell.store.text = cart.items.store
cell.lblMealName.text = (cart.items.name)
cell.lblSubTotal.text = "$\(cart.items.cost)"
cell.the_image = UIImage(with: URL(string: cart.imageUrl))
以上只是伪代码,因为我们不知道您的Cart类或CartCell类是什么样。