You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift:点击TableView单元格后变量无法累加,始终输出10

问题分析与解决方案

嘿,我一眼就瞅出你代码里的问题啦!

核心问题:局部变量没法持久化累加

你把tableView2Taps定义在了didSelectRowAt方法的else代码块内部:

else{ 
    var tableView2Taps = 0 
    // ... 其他逻辑代码
    tableView2Taps += 10 
    // ...
    print(tableView2Taps) 
}

这意味着每次用户点击单元格时,这个变量都会被重新创建并初始化为0,之后再加10,所以每次打印结果必然是10,完全做不到累加效果。

修复方案:把变量改成类的实例属性

要让变量的值在多次点击之间保存下来,你需要把tableView2Taps定义为当前ViewController的实例属性,放在方法外面:

// 在类的顶部(方法外面)定义这个属性
var tableView2Taps = 0

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated: true) 
    if (tableView == secondTable){ 
        if isTimerRunning == true { 
            // 这里可以留空或者添加提示用户的逻辑
        }else{ 
            selectedindex = indexPath.row 
            if (selectedindex == 0){ 
                seconds = 3600 
                secondsreset = 3600 
                tableView2Taps += 10 
            } 
            if (selectedindex == 1){ 
                seconds = 2700 
                secondsreset = 2700 
                tableView2Taps += 10 
            } 
            if (selectedindex == 2){ 
                seconds = 1800 
                secondsreset = 1800 
                tableView2Taps += 10 
            } 
            if (selectedindex == 3){ 
                seconds = 1200 
                secondsreset = 1200 
                tableView2Taps += 10 
            } 
            if (selectedindex == 4){ 
                seconds = 600 
                secondsreset = 600 
                tableView2Taps += 10 
            } 
            print(tableView2Taps) 
        } 
        // ... 剩下的单元格勾选逻辑不变
    } 
}

额外优化小建议

你可以把多个重复的if判断改成switch语句,让代码更简洁清爽:

switch selectedindex {
case 0:
    seconds = 3600
    secondsreset = 3600
case 1:
    seconds = 2700
    secondsreset = 2700
case 2:
    seconds = 1800
    secondsreset = 1800
case 3:
    seconds = 1200
    secondsreset = 1200
case 4:
    seconds = 600
    secondsreset = 600
default:
    break
}
tableView2Taps += 10

这样修改之后,每次点击符合条件的单元格时,tableView2Taps就会持续累加,打印出来的数值也会正常增长啦!

内容的提问来源于stack exchange,提问作者Johnny Microseed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:02:56