ios - 从具有 id 的 UItableview 单元格中获取数据

标签 ios json swift uitableview

我正在处理一个项目,其中在 UITableView 中有一个订单列表。订单来自 JSON 格式的 API。每个 UITableview 单元格都有:

  1. 店铺名称

  2. 店铺地址

  3. 客户姓名

  4. 客户地址

同样在 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/

相关文章:

json - 使用 Alamofire 将 Web 服务响应转换为 JSON 对象

ios - block 和内存泄漏

ios - 如何使用自动布局设置 tableHeaderView (UITableView) 的高度?

ios - 使所有子类都符合特定的协议(protocol)

XCode 7 join 已弃用

ios - 使用 XCUITest 测试 UIView 是否被隐藏

ios - 如何在 Swift 中使用关联类型测试协议(protocol)的一致性?

ios - 如何使用自动布局创建具有设置高度 subview 的 UITableViewCell?

javascript - AngularJS:动态地将 has-error 应用于输入字段

javascript - 如何更新要点?