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

如何为通过代码创建的UITextField添加IBAction?

代码创建的UITextField添加编辑事件并计算课程成绩

因为是纯代码创建的UITextField,没法用Storyboard的IBAction绑定,直接通过target-action机制就能实现编辑触发事件的需求,步骤如下:

  1. 声明数组管理所有动态创建的文本框
// 用来存储所有作业分数输入框,方便后续遍历计算
var scoreTextFields = [UITextField]()
  1. 创建UITextField时绑定事件
    创建文本框的同时,给它添加编辑状态变化的监听,把处理方法和当前控制器绑定:
// 注意变量名别用label,改成scoreField更贴合用途
let scoreField = UITextField(frame: CGRect(x: 0, y: 0, width: 300, height: 21))
// 设置数字键盘,方便输入分数
scoreField.keyboardType = .decimalPad
// 绑定编辑变化事件,触发计算方法
scoreField.addTarget(self, action: #selector(calculateCourseScore), for: .editingChanged)
// 把当前文本框加入管理数组
scoreTextFields.append(scoreField)
// 添加到视图显示
view.addSubview(scoreField)
  1. 实现成绩计算方法
    编写calculateCourseScore方法,遍历所有文本框累加有效分数:
@objc func calculateCourseScore() {
    var totalScore = 0.0
    // 遍历所有输入框,提取有效分数并累加
    for textField in scoreTextFields {
        guard let scoreText = textField.text, let score = Double(scoreText) else {
            continue // 跳过空值或非数字的输入
        }
        totalScore += score
    }
    // 这里可以把计算结果展示到界面,比如赋值给UILabel
    // example: courseResultLabel.text = "课程总分:\(totalScore)"
}

补充说明

  • 事件类型可选:如果希望用户结束编辑时再计算,把.editingChanged换成.editingDidEnd即可。
  • 数组管理是关键:因为文本框数量可变,必须用数组统一存储,才能遍历所有输入项计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:06:26