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

按钮点击后将计算结果显示到Table View Cell的实现问题

实现点击按钮后将计算结果显示到TableView Cell的方案

没问题,我来帮你搞定这个需求,核心逻辑就是把计算后的津贴金额存入数据源数组,然后刷新TableView让数据显示出来,具体步骤如下:

1. 准备数据源数组

首先我们需要一个数组来存储每个月的计算结果,和已有的月份名称数组对应:

// 月份名称数组(你已有的)
var monthsOfNonWorking = ["1. mēnesis","2. mēnesis","3. mēnesis","4. mēnesis","5. mēnesis","6. mēnesis","7. mēnesis","8. mēnesis","9. mēnesis",]
// 新增:存储每个月津贴金额的数组
var nonWorkingAllowances: [Double] = []

2. 完善计算逻辑并更新数据源

补全你的nonWorkingAllowanceCalculate方法,完成计算后把结果填充到数据源数组,最后刷新TableView:

@IBAction func nonWorkingAllowanceCalculate(_ sender: Any) {
    // 先清空旧的计算结果,避免重复数据
    nonWorkingAllowances.removeAll()
    
    // 安全获取输入的津贴基数,避免空值/非数字导致崩溃
    guard let bezdarbieniekaAlga = Double(bezd_alga.text!) else {
        print("请输入有效的数字作为津贴基数")
        // 这里也可以加个弹窗提示用户输入正确内容
        return
    }
    
    var firstThreeMonths: Double
    var secondThreeMonths: Double
    var lastThreeMonths: Double
    
    // 根据你的业务逻辑计算各阶段金额(补全了你省略的部分)
    if staza_masiva_lasisana == 0 {
        firstThreeMonths = bezdarbieniekaAlga / 2
        secondThreeMonths = firstThreeMonths / 2
        lastThreeMonths = secondThreeMonths / 2
    } else {
        // 如果有其他工龄对应的计算规则,在这里补充
        firstThreeMonths = bezdarbieniekaAlga * 0.6 // 示例值,按需调整
        secondThreeMonths = bezdarbieniekaAlga * 0.4
        lastThreeMonths = bezdarbieniekaAlga * 0.2
    }
    
    // 把计算结果按月份顺序填充到数据源数组
    // 前3个月
    for _ in 0..<3 {
        nonWorkingAllowances.append(firstThreeMonths)
    }
    // 中间3个月
    for _ in 0..<3 {
        nonWorkingAllowances.append(secondThreeMonths)
    }
    // 最后3个月
    for _ in 0..<3 {
        nonWorkingAllowances.append(lastThreeMonths)
    }
    
    // 关键一步:刷新TableView,让新数据显示出来
    tableView.reloadData()
}

3. 实现TableView数据源方法

确保你的ViewController遵守UITableViewDataSource协议,然后实现以下方法,把数据绑定到Cell上:

// 先在ViewController的类声明里添加协议:
// class YourViewController: UIViewController, UITableViewDataSource

// 设置表格行数
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return monthsOfNonWorking.count // 和月份数量一致,共9行
}

// 配置每个Cell的内容
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    // 替换成你实际的Cell重用标识符(Storyboard里要对应设置)
    let cell = tableView.dequeueReusableCell(withIdentifier: "NonWorkingAllowanceCell", for: indexPath)
    
    let monthName = monthsOfNonWorking[indexPath.row]
    // 确保下标不越界(避免计算结果数组长度不足的情况)
    guard indexPath.row < nonWorkingAllowances.count else {
        cell.textLabel?.text = "\(monthName): 未计算"
        return cell
    }
    let allowance = nonWorkingAllowances[indexPath.row]
    
    // 把数据显示到Cell上,示例用默认的textLabel和detailTextLabel
    cell.textLabel?.text = monthName
    cell.detailTextLabel?.text = String(format: "%.2f EUR", allowance) // 保留两位小数显示金额
    
    return cell
}

4. 额外注意事项

  • 在viewDidLoad里记得给TableView设置数据源:tableView.dataSource = self
  • 确保你的TableView在Storyboard/XIB里已经设置了正确的Cell重用标识符,或者用代码注册Cell
  • 可以给输入框bezd_alga加输入限制,只允许输入数字,减少无效输入的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:52:49