我知道这可能是最基本的问题,但我对斯威夫特还不熟悉。
另外,我也尝试过各种解决方法,但都无法解决这个问题。
如果有人能帮我解决问题。
我有一个自定义的UIVIEW类,如下所示:

class SearchTextFieldView: UIView, UITextFieldDelegate{
    public var searchText = UITextField()


        override init(frame: CGRect) {
            super.init(frame: frame)
            initializeUI()
        }


        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            initializeUI()
        }



        func initializeUI() {
            searchText.placeholder = "Enter model no"
            searchText.backgroundColor = UIColor.white
            searchText.textColor = UIColor.darkGray
            searchText.layer.cornerRadius = 5.0
            searchText.delegate=self
            self.addSubview(searchText)

        }

        override func layoutSubviews() {
            searchText.frame = CGRect(x: 20.0, y: 5.0, width: self.frame.size.width - 40,height : self.frame.size.height - 10)
        }
}

现在,我要将另一个类的text设置为SearchText textfield,如下所示:
override func viewDidLoad() {
        super.viewDidLoad()
        setupUI()
        // Do any additional setup after loading the view.
    }

    func setupUI() {

        let searchTextFieldView = SearchTextFieldView()
        self.view.addSubview(searchTextFieldView)    //adding view containing search box view at the top
        **searchTextFieldView.searchText.text = "My Text"**
    }

我在用故事板。另外,我可以看到带有占位符文本的文本字段。唯一的问题是我不能将文本设置为它。
有人能帮忙吗。我的密码有什么问题。

最佳答案

需要调用searchTextFieldView.setNeedsDisplay(),这将依次调用override func draw(_ rect: CGRect)中的class SearchTextFieldView
在SearchTextFieldView中添加override func draw(_ rect: CGRect) {},并尝试在searchText.text = <someValue>中设置draw()。您可以使用String中的SearchTextFieldView属性从客户机(使用<someValue>类的客户机)获取SearchTextFieldView

关于ios - 在另一个自定义ViewController中更改自定义UIView的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53370102/

10-13 04:11
查看更多