我试图隐藏细胞。它使用开关工作,但使用按钮不 知道为什么吗?
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)
}
}
答案 0 :(得分:0)
如果您想使用按钮来控制某些单元格的可见性,只需在Storyboard
上添加按钮,将其连接到IBOutlet
,然后为其创建IBAction
即可行动,请执行以下操作:
@IBAction func onHiddenCellsButtonTouched(_ sender: UIButton) {
hiddenCellsAreShown = !hiddenCellsAreShown
tableView.beginUpdates()
tableView.endUpdates()
}
如果用户触摸按钮,则使用此项,单元格的可见性会被翻转,因此如果它们之前被隐藏,它们就会变得可见,如果它们可见,它们就会被隐藏。
您的所有其他功能都可以保持不变。