使用UISwitch& amp;隐藏表格视图单元格。的UIButton

时间:2017-08-09 08:12:08

标签: swift tablecell

我试图隐藏细胞。它使用开关工作,但使用按钮不 知道为什么吗?

 class SideMenuController: UITableViewController {
    @IBOutlet weak var hiddenCellsSwitch: UISwitch! 
    @IBOutlet weak var hiddenCell1: UITableViewCell!
    @IBOutlet weak var parentCell: UITableViewCell!
    @IBOutlet weak var hiddenCell2: UITableViewCell!

    var hiddenCellsAreShown: Bool = false
    var hiddenCell1IndexPath: IndexPath?
    var hiddenCell2IndexPath: IndexPath?

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    @IBAction func onHiddenCellsSwitchChanged(_ sender: AnyObject) {
        hiddenCellsAreShown = sender.isOn
        tableView.beginUpdates()
        tableView.endUpdates()
     }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let result = super.tableView(tableView, cellForRowAt: indexPath)
        if result === hiddenCell1 {
            hiddenCell1IndexPath = indexPath
        } else if result === hiddenCell2 {
            hiddenCell2IndexPath = indexPath
        } else if result === parentCell {
            hiddenCellsSwitch.isOn = hiddenCellsAreShown
        }
        return result
    }

    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        if !hiddenCellsAreShown && (indexPath == hiddenCell1IndexPath || indexPath == hiddenCell2IndexPath) {
            return 0
        }
        return super.tableView(tableView, heightForRowAt: indexPath)
    }
}

1 个答案:

答案 0 :(得分:0)

如果您想使用按钮来控制某些单元格的可见性,只需在Storyboard上添加按钮,将其连接到IBOutlet,然后为其创建IBAction即可行动,请执行以下操作:

@IBAction func onHiddenCellsButtonTouched(_ sender: UIButton) {
    hiddenCellsAreShown = !hiddenCellsAreShown
    tableView.beginUpdates()
    tableView.endUpdates()
 }

如果用户触摸按钮,则使用此项,单元格的可见性会被翻转,因此如果它们之前被隐藏,它们就会变得可见,如果它们可见,它们就会被隐藏。

您的所有其他功能都可以保持不变。