我有一个包含三个部分的静态表视图
第1节包含1行
第2节包含1行
第3节包含2行
我在第1节中有一个UISwitch,通过更改它,应该删除第2节或插入
因为我有静态表,所以我只添加了numberOfSections
协议
另外,我还创建了一个节名称数组,仅用于计数节的数量,仅此而已。
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]节)时,它可以完美地工作。
我听说我必须先删除该部分中的数据,但是当它删除最后一个部分时,我没有删除任何数据,并且工作正常。 你能帮我吗?非常感谢
答案 0 :(得分:0)
您确实需要从dataSource中删除这些部分。该表将再次使用与数组中提供的相同的部分进行构造,但是如果删除其中的一部分,则数学运算不会累加。
此外,这里不需要package com.meti.app;
import javafx.application.Application;
import javafx.stage.Stage;
/**
* @author SirMathhman
* @version 0.0.0
* @since 4/5/2019
*/ //Main MUST remain public in order for JavaFX Application to start.
public class Main extends Application {
static InfinityImpl implementation = new Infinity();
static Main instance;
@Override
public void start(Stage primaryStage) {
instance = this;
implementation.start(primaryStage);
}
@Override
public void stop() {
implementation.stop();
instance = null;
}
public static void main(String[] args) {
launch(args);
}
}
和beginUpdates()
,但在执行多个更新时会使用它们。
endUpdates()