You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Table View行的ListID传递至下一个视图控制器?

解决TableView行选中后传递ListID到详情页的问题

首先看你当前的代码,其实已经成功把选中的Shipment对象传递到第二个视图控制器了,只是因为你把它包装成了一个数组,所以访问方式需要对应调整。当然,我们也可以优化写法让整个流程更清晰。

临时解决:直接从现有数组中访问ListID

你现在在第二个视图控制器里的ShipListID是一个只包含单个Shipment的数组,所以可以通过数组的first属性拿到对象,再访问ListID:

// 在第二个视图控制器的viewDidLoad或者其他需要的地方
if let selectedShipment = ShipListID.first {
    let targetListID = selectedShipment.ListID
    print("选中的ListID:\(targetListID)")
    // 这里就可以用这个ID做后续操作了
}

更优方案:传递单个Shipment对象(推荐)

既然每次只选中一行,完全没必要用数组来传递数据,我们可以修改属性类型,让代码更直观:

  1. 修改第二个视图控制器的属性
    把原来的数组类型改成单个可选的Shipment对象:
// 替换 ShippingUnitsTableViewController 里的 var ShipListID = [Shipment]()
var selectedShipment: Shipment?
  1. 调整第一个视图控制器的传递逻辑
    在didSelectRowAt方法里,直接传递选中的单个对象,不用包装成数组:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let vc = ShippingUnitsTableViewController()
    vc.selectedShipment = ShipLists[indexPath.row]
    navigationController?.pushViewController(vc, animated: true)
}
  1. 在第二个视图控制器中访问ListID
    现在就可以安全地取出ListID了:
override func viewDidLoad() {
    super.viewDidLoad()
    if let shipment = selectedShipment {
        let listID = shipment.ListID
        // 比如把ID展示到标签上:yourLabel.text = listID
        print("选中的运单ID:\(listID)")
    }
}

极简方案:直接传递ListID字符串

如果你的详情页只需要ListID这一个值,不需要Shipment的其他属性,那可以更直接:

  1. 在第二个视图控制器定义字符串属性
var selectedListID: String?
  1. 第一个视图控制器直接传递ID
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let vc = ShippingUnitsTableViewController()
    vc.selectedListID = ShipLists[indexPath.row].ListID
    navigationController?.pushViewController(vc, animated: true)
}
  1. 在第二个视图控制器使用ID
override func viewDidLoad() {
    super.viewDidLoad()
    if let listID = selectedListID {
        print("选中的ListID:\(listID)")
        // 后续业务逻辑
    }
}

这样根据你的实际需求选择合适的方案就好啦~

内容的提问来源于stack exchange,提问作者Mike Volmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:14:33