繁体   English   中英

如何访问从Swift中的另一个类扩展UIStackView的swift类变量?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM