ios - 在另一个自定义 ViewController 中更改自定义 UIView 的变量

标签 ios swift uiview swift4

我知道这可能是个基本问题,但我是 Swift 的新手。 另外,我在 SO 上尝试了各种解决方案,但无法解决问题。 所以如果有人能帮我解决我的问题。

我有一个自定义的 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)
        }
}

现在我想将文本设置为来自另一个类的 SearchText 文本字段,如下所示:

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"**
    }

我正在使用 Storyboard。另外,我可以看到带有占位符文本的文本字段。唯一的问题是我无法为其设置文本。 任何人都可以帮忙。我的代码有什么问题。

最佳答案

需要调用searchTextFieldView.setNeedsDisplay(),这会依次调用override func draw(_ rect: CGRect)class SearchTextFieldView .

添加override func draw(_ rect: CGRect) {}在 SearchTextFieldView 中,尝试设置 searchText.text = <someValue>draw() .您可以使用 String属性(property) SearchTextFieldView , 得到 <someValue>来自客户端(使用 SearchTextFieldView 的客户端)类。

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

相关文章:

ios - iOS 分发文件中的过期日期

ios - IPA安装循环

ios - 使用 CIFilter 进行渲染时,实时摄像机被拉伸(stretch)。 - swift 4

ios - 如何调用ViewController中所有自定义UIView的方法?

ios - tableView.insertRows 抛出 NSException,但不是当 `insertRows` at `[[0,0]]`

iphone - 在制作动画时应用 CAAnimation 的更改

ios - 仿射变换 + 演示应用程序

swift - 快速解析 XML 数据

ios - 将平移手势识别器限制为特定圆圈

ios - 带有 SpriteKit 的 UITableView