按钮点击后将计算结果显示到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
相关产品推荐
相关产品推荐

