我不想在tableview上显示所有项目。我想通过按“ go”按钮显示单元格。但是每当我运行下面的代码时。我收到“致命错误:索引超出范围”
var count = 1
var rowCount: Int = 1 {
willSet {
if count != baslik.count {
count = newValue
tableView.reloadData()
}
}
}
var baslik = [String]()
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = baslik[indexPath.row]
return cell
}
@IBAction func go(_ sender: UIButton) {
rowCount += 1
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
}
答案 0 :(得分:0)
您的baslik
数组为空
var baslik = [String]()
单元数从1开始:
var count = 1
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return count
}
当表格尝试获取第一个单元格的项目时,它会崩溃:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
...
cell.textLabel?.text = baslik[indexPath.row] /// 0 is out of range
...
}
为防止此崩溃从0开始,并且仅在数据到达时才增加为1:
var rowCount: Int = 0 {
willSet {
rowCount = min(baslik.count, newValue)
}
didSet {
guard oldValue != rowCount else { return }
tableView.reloadData()
}
}
var baslik = [String]() {
didSet {
rowCount = 1
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return rowCount
}
... rest same