我有一个开关按钮可以隐藏和显示表格视图中的部分
让我说我在数组中定义了三个部分:
var sections = ["section1", "section2", "section3"]
这是各节的表视图协议
override func numberOfSections(in tableView: UITableView) -> Int {
return sections.count
}
这是当切换按钮的切换将改变时将要调用的函数:
@objc func switchStateDidChange(_ sender: UISwitch) {
sections.remove(at: 1)
// My problem is here
tableView.deleteSections(IndexSet, with: .top)
}
在此函数中,我首先说过将节数组中的节数减少1,然后删除节1
但是如果我在IndexSet中输入1,则会出现此错误:
无法将类型“ Int”的值转换为预期的参数类型“ IndexSet”
如何通知tableView.deleteSections
删除第1节?
答案 0 :(得分:2)
您可以尝试
tableView.deleteSections([0], with: .top)
将值更改为所需的索引
答案 1 :(得分:0)
您必须从IndexSet
创建一个特定的Int
实例
tableView.deleteSections(IndexSet(integer: 1), with: .top)
或使用IndexPath
的{{3}}方法来推断Int
数组
tableView.deleteSections([1], with: .top)
答案 2 :(得分:0)
在更新UITableView
时,您需要确保做几件事。
确保已从tableView
使用的数组中删除了数据
请确保在更新数组时不会刷新tableView,例如,您是数组的观察者或didSet
。
在尝试更新之前,请确保您有可用的部分
告诉tableView您将要进行更新
let removeSection = 0
if tableView.numberOfSections >= removeSection+1 {
tableView.beginUpdates()
tableView.deleteSections([removeSection], with: .top)
tableView.endUpdates()
}