使用didSelectRowAt(_ :)在Swift中选择错误的单元格后突出显示正确答案

时间:2018-08-12 22:23:40

标签: ios swift

我有一个测验应用程序,该应用程序使用带有包含标签的单元格的表格视图,我使用dequeueReusableCell重用了该应用程序。现在,当用户单击错误的答案时,标签应该变成红色,并且应该向我显示正确的答案,同时以绿色背景突出显示正确的答案标签。所有这些都应在didSelectRowAt(_:)中进行。

1 个答案:

答案 0 :(得分:0)

您应该在tableView(_:cellForRowAt:)函数中控制单元格的背景。按下单元格后,如果尚未显示正确的答案,则应重新加载表格视图。

var shouldShowRightAnswer = false

let rightAnswer = 0
var selectedAnswer: Int?

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    [...]

    if shouldShowRightAnswer {
        if indexPath.row == rightAnswer {
            cell.backgroundColor = .green
            cell.textLabel.textColor = .white
        } else if indexPath.row == selectedAnswer {
            cell.backgroundColor = .white
            cell.textLabel.textColor = .red
        }
    } else {
        cell.backgroundColor = .white
        cell.textLabel.textColor = .black
    }

    [...]
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if !shouldShowRightAnswer {
        selectedAnswer = indexPath.row
        shouldShowRightAnswer = true
        tableView.reloadData()
    }
}