【问题标题】:How to pass specific value to a cell when that cell is selected?选择单元格时如何将特定值传递给单元格?
【发布时间】:2023-09-01 23:34:01
【问题描述】:

简而言之,如何在索引路径的 didselect 行中调用 performforsegue 方法。我有一个数组,这个数组就是tableView的内容

`let array = ["USD","Inr", "AUD", "AED"]` 

我有这个数组的值

let valueUSD = "65"
let valueInr = "10"
let valueAUD = "70"
let valueAED = "20"
 

我有另一个带有可选字符串和标签的 viewController,并且在我调用的 viewdidload 上

label.text = optionalstring //just a pseudocode but you get the idea

现在问题来了,当用户选择 USD 时,我希望可选字符串获取 valueUSD 变量的值,而当他选择 INR 时,它应该取 valueInr 变量值等等,这样目标视图控制器就会显示这个值,我不知道如何实现这一点,如何获取选定的 indexpath.row 以及基于此如何设置值,例如

if indexpath.row == 0

`destinationViewController.optionalString = valueUSD`

感谢您的关注。

【问题讨论】:

    标签: swift uitableview segue didselectrowatindexpath indexpath


    【解决方案1】:

    您应该将数据存储在自定义结构类型的数组中:

    let array = [
        MyData(name: "USD", number: "65"),
        MyData(name: "Inr", number: "10"),
        MyData(name: "AUD", number: "70"),
        MyData(name: "AED", number: "20"),
    ]
    

    MyData 是这样的:

    struct MyData { // please give this a better name based on the data that you are working with!
        let name: String
        let number: String
    }
    

    您可能需要更改cellForRowAt 方法,将单元格的标签文本设置为array[indexPath.row].name 而不是array[indexPath.row]

    didSelectRowAt:

    let selectedData = array[indexPath.row].number
    performSegue(withIdentifier: "insert your segue identifier here", sender: selectedData)
    

    然后,覆盖prepare(for:sender:)

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if let vc = segue.destination as? TypeOfTheDestinationVC,
            let number = sender as? String {
            vc.optionalString = number
        }
    }
    

    【讨论】: