Ios Swift&;UITextFieldDelegate:如何获取调用委托的对象?还是用变量调用文本框?
我正在尝试用XCode和Swift创建我的第一个应用程序。没什么大不了的,只是我经常玩的一个简单的计算器。对我来说很方便,哈哈 它只是应该有6个文本框,每个框是我拥有的材料的数量。你可以“组合”这些材料。4个级别1材质组合为1个级别2材质,依此类推至级别6 我可以有1个1级,3个2级,1个3级,0个4级,3个5级,1个6级。。我会把每一个放在一个文本框中,点击按钮,它会告诉我需要多少更多的1级材料才能获得另一个6级 无论如何,按照这里的指南,它让您手动定义文本框。然而,我有6个,我发现手工定义每一个都很糟糕。如果我有一个有100个文本框的大型应用程序,那该怎么办Ios Swift&;UITextFieldDelegate:如何获取调用委托的对象?还是用变量调用文本框?,ios,swift,delegates,Ios,Swift,Delegates,我正在尝试用XCode和Swift创建我的第一个应用程序。没什么大不了的,只是我经常玩的一个简单的计算器。对我来说很方便,哈哈 它只是应该有6个文本框,每个框是我拥有的材料的数量。你可以“组合”这些材料。4个级别1材质组合为1个级别2材质,依此类推至级别6 我可以有1个1级,3个2级,1个3级,0个4级,3个5级,1个6级。。我会把每一个放在一个文本框中,点击按钮,它会告诉我需要多少更多的1级材料才能获得另一个6级 无论如何,按照这里的指南,它让您手动定义文本框。然而,我有6个,我发现手工定义每
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
// MARK: Properties
@IBOutlet weak var txt1: UITextField!
@IBOutlet weak var txt2: UITextField!
@IBOutlet weak var txt3: UITextField!
@IBOutlet weak var txt4: UITextField!
@IBOutlet weak var txt5: UITextField!
@IBOutlet weak var txt6: UITextField!
@IBOutlet weak var btnGo: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
txt1.delegate = self
txt2.delegate = self
txt3.delegate = self
txt4.delegate = self
txt5.delegate = self
txt6.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
// Hide the keyboard.
textField.resignFirstResponder()
return true
}
func textFieldDidEndEditing(textField: UITextField) {
// here is where its dumb
txt1.text = textField.text
}
// MARK: Actions
@IBAction func calculateItems(sender: UIButton) {
// do my calculations
}
}
正如您在func textfielddidediting
中看到的,这不起作用。我读了一篇提示,为每个输入指定标签。尽管如此,我还是必须手动计算每一项,如下所示:
func textFieldDidEndEditing(textField: UITextField) {
if (textField.tag == 1) {
txt1.text = textField.text
}
if (textField.tag == 2) {
txt2.text = textField.text
}
if (textField.tag == 3) {
txt3.text = textField.text
}
if (textField.tag == 4) {
txt4.text = textField.text
}
if (textField.tag == 5) {
txt5.text = textField.text
}
if (textField.tag == 6) {
txt6.text = textField.text
}
}
再说一次,每个人都这样做似乎很愚蠢
我需要什么
或者
A)能够通过变量调用文本字段
var dynText = textField
dynText.text = textField.text
但是,这会抛出一个错误,说明变量dynText没有text的成员
B)了解哪个对象(文本框)首先命中/调用了代理
我怎样才能解决这个问题?我怀疑你们是在手动定义应用程序中的每个文本框 为什么要将文本指定给刚刚结束编辑的文本字段?调用此委托时,用户输入的文本已存在于该文本字段中。您在委托方法中收到的文本字段是调用委托方法的文本字段。ex in textfielddidediting您收到的文本字段与发生相应操作的文本字段相同。您不必像以前那样检查标记和赋值。有许多您需要更新用户刚刚填写的文本框的原因。例如:将“joe smith”转换为“joe smith”,或使用trim()删除额外空格,或删除无效字符。-我只想更新文本框,而不手动定义100个文本框。为什么要将文本分配给刚刚结束编辑的文本字段?调用此委托时,用户输入的文本已存在于该文本字段中。您在委托方法中收到的文本字段是调用委托方法的文本字段。ex in textfielddidediting您收到的文本字段与发生相应操作的文本字段相同。您不必像以前那样检查标记和赋值。有许多您需要更新用户刚刚填写的文本框的原因。例如:将“joe smith”转换为“joe smith”,或使用trim()删除额外空格,或删除无效字符。-我只想更新文本框,而不需要手动定义100个文本框。