如何根据UISwitch操作更新Class中项的值?

时间:2017-10-26 11:43:44

标签: arrays swift uitableview indexing uiswitch

我有项目类,如下所示:

struct Cur: Decodable {
    let id: String?
    let name: String?
    let symbol: String?
    let rank: String?
    let switchVal: Bool?
}

此类填充数组,数组填充UITableView。

这里我如何访问UISwitch动作:

@IBAction func switchBtn(_ sender: UISwitch) {
    if sender.isOn {

        // See if user is in Search Mode
        if inSearchMode {

            // if user in search mode get the Cur from filtered array
            if let switchRank = filterCur.index(where: {$0.switchVal}) {
                print("This is the rank: \(filterCur[switchRank].rank!)")

            }

        } else {
            if let switchRank = Cur.index(where: {$0.switchVal}) {
                print("This is where it is: \(Cur[switchRank])")

            }
        }

    } else {
        // Handle deleting previously selected Curs

    }
}

为了让我找到数组中的哪个项目是Switched On / Off我必须更新数组(items switchVal = true?)。但是,要更新阵列,我需要知道触发了哪个项目的开关。

那么,我的错误在哪里?

谢谢

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是,通过将UISwitch属性分配给每个Cur索引{/ 1}}。

tag

由于您现在知道每个开关都有索引,您可以通过使用开关标签访问阵列来获取该项目。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    ...
    cell.switch.tag = indexPath.row
    ...
}