Swift实现UITextField输入追加到UILabel显示(禁用数组)问题排查
错误原因
你在type方法内部声明了text局部变量,每次点击触发该方法时,这个变量都会被重新初始化为空字符串,之前的拼接内容会被直接清空,所以最终只会显示最新输入的内容。
修正方案
- 将存储拼接结果的
text变量移出方法,改为当前控制器的类属性,在控制器的整个生命周期内保留值 - 新增输入合法性校验,避免空字符串也被拼接到结果中
- 拼接时增加空格分隔旧内容和新内容
修正后的代码如下:
@IBOutlet weak var textTextField: UITextField! @IBOutlet weak var textLabel: UILabel! // 定义为类属性,全局保留拼接结果 var text: String = "" @IBAction func type(_ sender: Any) { // 校验输入非空且不为空白内容 guard let input = textTextField.text, !input.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else { return } // 拼接逻辑:已有内容先加空格再拼接新输入,无内容直接赋值 if text.isEmpty { text = input } else { text += " \(input)" } textLabel.text = text textTextField.text = nil }
该方案直接使用字符串拼接实现需求,未使用数组,符合作业要求。
内容的提问来源于stack exchange,提问作者Kseniia Piskun
相关产品推荐
相关产品推荐

