我尝试引用新添加的textField。关键是要放入这些文本字段数据,然后将其保存在CoreData中,但是我不知道该怎么做。
在打印屏幕下方
By the help of Add button I can add new row of textfields
Textfields的模型在另一个类“ txtfields”中,而不在ViewController中。在textfields类中,所有文本字段都放置在函数中。
class txtFields: UIView {
func inputTxtFields( value: Int,value2: Int, value3:Int, ScrollView: UIView) {
var tf = UITextField(frame: CGRect(x: 20, y: value, width: 100, height: 30))
tf.backgroundColor = .white
tf.placeholder = "excercise"
tf.layer.cornerRadius = 5
ScrollView.addSubview(tf)
var tf2 = UITextField(frame: CGRect(x: 150, y: value2, width: 30, height: 30))
tf2.backgroundColor = .white
tf2.layer.cornerRadius = 5
tf2.placeholder = "rp"
ScrollView.addSubview(tf2)
let tf3 = UITextField(frame: CGRect(x: 150, y: value3, width: 30, height: 30))
tf3.backgroundColor = .white
tf3.layer.cornerRadius = 5
tf3.placeholder = "kg"
ScrollView.addSubview(tf3)
let tf4 = UITextField(frame: CGRect(x: 200, y: value2, width: 30, height: 30))
tf4.backgroundColor = .white
tf4.layer.cornerRadius = 5
tf4.placeholder = "rp"
ScrollView.addSubview(tf4)
let tf5 = UITextField(frame: CGRect(x: 200, y: value3, width: 30, height: 30))
tf5.backgroundColor = .white
tf5.layer.cornerRadius = 5
tf5.placeholder = "kg"
ScrollView.addSubview(tf5)
let tf6 = UITextField(frame: CGRect(x: 250, y: value2, width: 30, height: 30))
tf6.backgroundColor = .white
tf6.layer.cornerRadius = 5
tf6.placeholder = "rp"
ScrollView.addSubview(tf6)
let tf7 = UITextField(frame: CGRect(x: 250, y: value3, width: 30, height: 30))
tf7.backgroundColor = .white
tf7.layer.cornerRadius = 5
tf7.placeholder = "kg"
ScrollView.addSubview(tf7)
let tf8 = UITextField(frame: CGRect(x: 300, y: value2, width: 30, height: 30))
tf8.backgroundColor = .white
tf8.layer.cornerRadius = 5
tf8.placeholder = "rp"
ScrollView.addSubview(tf8)
let tf9 = UITextField(frame: CGRect(x: 300, y: value3, width: 30, height: 30))
tf9.backgroundColor = .white
tf9.layer.cornerRadius = 5
tf9.placeholder = "kg"
ScrollView.addSubview(tf9)
let tf10 = UITextField(frame: CGRect(x: 350, y: value2, width: 30, height: 30))
tf10.backgroundColor = .white
tf10.layer.cornerRadius = 5
tf10.placeholder = "rp"
ScrollView.addSubview(tf10)
let tf11 = UITextField(frame: CGRect(x: 350, y: value3, width: 30, height: 30))
tf11.backgroundColor = .white
tf11.layer.cornerRadius = 5
tf11.placeholder = "kg"
ScrollView.addSubview(tf11)
}
在ViewController(vc3)中,我创建了textfields对象:let Fields = textfields()。
在IBoutlet功能添加中,textfields类的功能将启动,每按一次添加按钮将创建一个新行。
class vc3: UIViewController {
var train = [Training]()
let access = Data()
var name:String?
var buttonPressed = 0
var wartoscy = 250
var wartosc2 = 265
var wartosc3 = 230
var addClicked = 0
var indexPath = 0
let Fields = txtFields()
var quantity = 0
@IBAction func add(_ sender: UIButton) {
print("clicked")
if self.quantity < 10 {
Fields.inputTxtFields( value: wartoscy, value2: wartosc2, value3: wartosc3, ScrollView: scview)
} else {
Alert.showAlert(vc: self)
return
}
buttonPressed += 1
quantity += 1
addClicked += 1
btnSave.isHidden = false
btnconstraints.constant += 100
wartoscy += 80
wartosc2 += 80
wartosc3 += 80
}
正如您现在所看到的,我有这些文本字段的名称,例如tf1 ... tf2 ..等等,但是我不知道如何引用它们来创建Core数据属性。也许我应该创建没有功能的它们?但是我需要具有value(wartosc),该值用于将文本字段移动到较低位置。变量wartosc放在vc3中。我当然希望像现在这样在另一个类中拥有所有这些文本字段。
当我使用Storyboard时,只有一个简单的解决方案:IBoutlet,但现在我不知道如何找到解决方案。
答案 0 :(得分:0)
您需要像这样引用它们
class txtFields: UIView {
var tf:UITextField!
func inputTxtFields( value: Int,value2: Int, value3:Int, ScrollView: UIView) {
tf = UITextField(frame: CGRect(x: 20, y: value, width: 100, height: 30))
}
}
//
let Fields = txtFields()
Fields.inputTxtFields( value: wartoscy, value2: wartosc2, value3: wartosc3, ScrollView: scview)
print(Fields.tf.text)
//
我还建议创建一个返回文本字段实例的函数,而不是重复相同的代码
//
根据您的评论
class txtFields: UIView {
var allTexFs = [UITextField]()
func inputTxtFields( value: Int,value2: Int, value3:Int, ScrollView: UIView) {
let tf = UITextField(frame: CGRect(x: 20, y: value, width: 100, height: 30))
allTexFs.append(tf)
}
}