我正在处理一个项目,其中在 UITableView 中有一个订单列表。订单来自 JSON 格式的 API。每个 UITableview 单元格都有:
店铺名称
店铺地址
客户姓名
客户地址
同样在 JSON 中我有 order_id。
我在 UItableview 中获取了数据,没问题。但是当用户点击其中一个订单时, View 应该转到订单详细信息。我通过类似 help/order/2
的链接在下一个 View 中获取订单详细信息,其中 2 是订单号。如何保存 order_id 并将其传递给下一个 View 以发出调用请求以获取详细信息?
我将订单保存在这样的类中:
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)
}
最佳答案
您无需将数据保存在可重复使用的 UITableViewCell
中。单元格只是显示数据。使用存储在某处的 [Order]
数组(例如包含此 TableView 的 UIViewController
)。
并通过 UITableViewDelegate
方法从该数组获取order_id
:
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#>
}
关于ios - 从具有 id 的 UItableview 单元格中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43902835/