我正在开发一个UITableView中有订单列表的项目。订单来自JSON格式的API。每个UITableview单元格都有:
商店名称
商店的收件人
客户名称
客户地址
同样在JSON中我有order_id。
我在UItableview中获取了数据,这很好。但是当用户点击其中一个订单时,视图应该转到订单详细信息。我通过像help/order/2
这样的链接在下一个视图中获取订单详细信息,其中2是订单号。如何保存order_id并将其传递到下一个视图以发出调用请求以获取详细信息?
我在这样的课程中保存订单:
class Order {
private var _date : String?
private var _logo : String?
private var _shopname : String?
private var _shopaddress : String?
private var _clientName : String?
private var _ClientAddress : String?
private var _PerferTime : String?
private var _Cost : String?
var date : String{
return _date!
}
var shopname : String{
return _shopname!
}
var shopaddress : String {
return _shopaddress!
}
var clientName : String {
return _clientName!
}
var ClientAddress : String{
return _ClientAddress!
}
var PerferTime : String{
return _PerferTime!
}
var Cost : String{
return _Cost!
}
var Logo : String{
return _logo!
}
init(shopname : String , shopaddress :String,clientName : String , ClientAddress : String, PerferTime : String , Cost : String , date:String , Logo : String) {
self._shopname = shopname
self._shopaddress = shopaddress
self._clientName = clientName
self._ClientAddress = ClientAddress
self._PerferTime = PerferTime
self._Cost = Cost
self._date = date
self._logo = Logo
}
}
更新
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
guard orders.count > indexPath.row else {
print("Index out of range")
return
}
let order = orders[indexPath.row]
print(order.id)
}
答案 0 :(得分:2)
您无需将数据保留在可重复使用的UITableViewCell
中。单元格只显示数据。使用存储在某处的[Order]
数组(例如,包含此表视图的UIViewController
)。
使用order_id
方法的索引从此数组中获取UITableViewDelegate
:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
喜欢:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
guard orders.count > indexPath.row else {
print("Index out of range")
return
}
let order = orders[indexPath.row]
if <#You want to present new VC via navigation controller#> {
navigationController?.pushViewController(<#OrderDetailsViewController#>, animated: true)
}else{
<#Do some other presentation#>
}