从标识为

时间:2017-05-10 21:12:07

标签: ios json swift uitableview

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

  1. 商店名称

  2. 商店的收件人

  3. 客户名称

  4. 客户地址

  5. 同样在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)
    
    }
    

1 个答案:

答案 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#>
}