gpt4 book ai didi

swift - deleteSections 只删除最后一部分

转载 作者:行者123 更新时间:2023-11-30 10:46:59 24 4
gpt4 key购买 nike

我有一个包含三个部分的静态 TableView

第 1 部分包含 1 行

第 2 部分包含 1 行

第 3 部分包含 2 行

我在第 1 部分中有一个 UISwitch,通过更改它,第 2 部分应该被删除或插入

由于我有静态表,所以我只添加了 numberOfSections 协议(protocol)我还制作了一个节名称数组,只是为了计算节的数量,仅此而已。

override func numberOfSections(in tableView: UITableView) -> Int {
if exportDataSwitch.isOn {
return sections.count - 1
} else {
return sections.count
}
}

在开关打开或关闭后调用的函数中,我编写了这些代码

@objc func switchStateDidChange(_ sender: UISwitch) {
if exportDataSwitch.isOn {
tableView.beginUpdates()
tableView.deleteSections([1], with: .fade)
tableView.endUpdates()
} else {
tableView.beginUpdates()
tableView.insertSections([1], with: .fade)
tableView.endUpdates()
}
}

问题是,当我想删除第 2 部分 ([1]) 时,出现此错误

Thread 1: signal SIGABRT

但是当我想删除最后一部分(第 3 [2] 节)时,它工作得非常好。

我听说我必须先删除该部分内的数据,但是当它删除最后一个部分时,我没有删除任何数据并且工作正常。你能帮我吗?非常感谢您

最佳答案

您确实需要从数据源中删除这些部分。该表将使用您在数组中提供的相同部分再次构建,但如果您删除一个部分,则数学不会相加。

此外,这里不需要 beginUpdates()endUpdates(),但在执行多个更新时使用。

@objc func switchStateDidChange(_ sender: UISwitch) {
if exportDataSwitch.isOn {
sections.remove(at: 1)
tableView.deleteSections([1], with: .fade)
} else {
sections.insert(“title”, at: 1)
tableView.insertSections([1], with: .fade)
}
}

override func numberOfSections(in tableView: UITableView) -> Int {
return sections.count
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if(section == 0) {
return 1
} else if(section == 1) {
return 1
} else if(section == 2) {
return 2
} else {
return 0
}
}

关于swift - deleteSections 只删除最后一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55563490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com