使用UISwitch隐藏/显示表格视图单元格

时间:2019-03-21 12:52:33

标签: swift uitableview uiswitch

我想在打开UISwitch时添加/显示一个表格单元格。 默认情况下,此UISwitch是关闭的。

首先,我在UISwitch类中定义了UITableViewCell,因为该开关位于另一个单元格中。

@IBOutlet weak var listSwitch: UISwitch!

然后:

在控制器中:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        if indexPath.row == 0 {
        let FirsteCell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! NewlistViewCell
        return FirsteCell
    } else if indexPath.row == 1 {
        let secondCell = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath) as! NewlistViewCell
        let switchCase = NewlistViewCell()
        if  switchCase.listSwitch.isOn  {
            return secondCell
        } else {
            return UITableViewCell()
        }
    }
    return UITableViewCell()
}

但是我得到了这个错误:

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

我可以指导我问题出在哪里吗?非常感谢

1 个答案:

答案 0 :(得分:0)

不要创建另一个类型为NEWlistViewCell的对象。您只需要使用已经制造的电池即可。通过使用以下代码,您可以消除此错误。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if indexPath.row == 0 {
    let FirsteCell = tableView.dequeueReusableCell(withIdentifier: "cell1", for: indexPath) as! NewlistViewCell
    return FirsteCell
} else if indexPath.row == 1 {
    let secondCell = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath) as! NewlistViewCell
    if  secondCell.listSwitch.isOn  {
        return secondCell
    } else {
        return UITableViewCell()
    }
}
return UITableViewCell()
}