我想用按钮在Tableview中一一显示单元格

时间:2019-03-24 20:24:13

标签: ios swift

我不想在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){

}

1 个答案:

答案 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