[英]How to access swift class variables that extends UIStackView from another class in Swift?
我有一个名为Text.swift的类,在该类中,我创建了我的文本字段,然后在另一个类Buttons.swift中,我想访问该类中的文本,以便当我按下按钮时,可以显示文本字段中的文本在textview区域。 但是我的问题是我无法调用Text类,但是我假设它为nil。 我是新手,所以可以帮我打电话吗?
公共类文本:UIStackView {
required public init(coder: NSCoder) {
super.init(coder : coder)
setUpTexts()
}
var textName = UITextField()
var textLastName = UITextField()
var textDepartment = UITextField()
private func setUpTexts(){
//text field properties such as border width
//then I added to my stack
}
}
类按钮:UIStackView {
var buttonSave = UIButton()
var buttonClear = UIButton()
var buttonCancel = UIButton()
var textView = UITextView()
var anotherClass : Text!
var arrayName = [String!]()
var arrayLastName = [String!]()
var arrayDepartment = [String!]()
required init(coder: NSCoder) {
super.init(coder : coder)
setUpButtons()
}
private func setUpButtons(){
buttonSave.setTitle("Save", for: .normal)
buttonClear.setTitle("Clear", for: .normal)
buttonCancel.setTitle("Cancel", for: .normal)
buttonSave.addTarget(self, action: #selector(Buttons.btnSave(_:)), for: .touchUpInside)
buttonClear.addTarget(self, action: #selector(Buttons.btnClear(_:)), for: .touchUpInside)
buttonCancel.addTarget(self, action: #selector(Buttons.btnCancel(_:)), for: .touchUpInside)
textView.isEditable = false
addArrangedSubview(textView)
addArrangedSubview(buttonSave)
addArrangedSubview(buttonClear)
addArrangedSubview(buttonCancel)
}
@IBAction func btnSave(_ sender : UIButton){
arrayName.append(self.anotherClass?.textName.text)
arrayLastName.append(self.anotherClass?.textLastName.text)
arrayDepartment.append(self.anotherClass?.textDepartment.text)
var sumText = " "
for item in 0..<arrayName.count{
sumText = sumText + "\(arrayName[item]!) \(arrayLastName[item]!) \(arrayDepartment[item]!)\n" //to print each person line by line
}
textView.text = sumText */
}
我想将文本添加到这些数组中,但是看不到它。 我看了很多stackoverflow问题,但找不到正确的问题。
您可以尝试一下吗,当您从Buttons自定义UIStackView
类创建对象时,必须给它提供框架或适当的约束
public class Text: UIStackView {
required public init(coder: NSCoder) {
super.init(coder : coder)
setUpTexts()
}
public override init(frame: CGRect) {
super.init(frame : frame)
setUpTexts()
}
var textName = UITextField()
var textLastName = UITextField()
var textDepartment = UITextField()
private func setUpTexts(){
distribution = .fillEqually
axis = .vertical
textName.backgroundColor = UIColor.red
textLastName.backgroundColor = UIColor.blue
textDepartment.backgroundColor = UIColor.orange
addArrangedSubview(textName)
addArrangedSubview(textLastName)
addArrangedSubview(textDepartment)
}
}
public class Buttons : UIStackView {
var buttonSave = UIButton()
var buttonClear = UIButton()
var buttonCancel = UIButton()
var textView = UITextView()
var anotherClass = Text()
var arrayName = [String!]()
var arrayLastName = [String!]()
var arrayDepartment = [String!]()
required public init(coder: NSCoder) {
super.init(coder : coder)
setUpButtons()
}
private func setUpButtons(){
distribution = .fillEqually
buttonSave.setTitle("Save", for: .normal)
buttonClear.setTitle("Clear", for: .normal)
buttonCancel.setTitle("Cancel", for: .normal)
buttonSave.addTarget(self, action: #selector(Buttons.btnSave(_:)), for: .touchUpInside)
buttonClear.addTarget(self, action: #selector(Buttons.btnClear(_:)), for: .touchUpInside)
buttonCancel.addTarget(self, action: #selector(Buttons.btnCancel(_:)), for: .touchUpInside)
textView.isEditable = false
textView.backgroundColor = UIColor.green
addArrangedSubview(anotherClass)
addArrangedSubview(textView)
addArrangedSubview(buttonSave)
addArrangedSubview(buttonClear)
addArrangedSubview(buttonCancel)
}
@IBAction func btnSave(_ sender : UIButton){
arrayName.append(self.anotherClass.textName.text)
arrayLastName.append(self.anotherClass.textLastName.text)
arrayDepartment.append(self.anotherClass.textDepartment.text)
var sumText = " "
for item in 0..<arrayName.count{
sumText = sumText + "\(arrayName[item]!) \(arrayLastName[item]!) \(arrayDepartment[item]!)\n" //to print each person line by line
}
textView.text = sumText
}
@IBAction func btnClear(_ sender : UIButton){
}
@IBAction func btnCancel(_ sender : UIButton){
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.