【发布时间】:2018-06-07 15:18:45
【问题描述】:
我有包含 textField 的自定义控件。示例代码如下所示:
@IBDesignable
class MyTextField: UIView {
private var _text: String?
private var textField: UITextField?
@IBInspectable var text: String? {
get {
return _text
} set (newValue) {
guard let txt = newValue else { return }
self._text = txt
//updateView()
}
}
override func awakeFromNib() {
super.awakeFromNib()
updateView()
}
override func prepareForInterfaceBuilder() {
super.prepareForInterfaceBuilder()
updateView()
}
func updateView() {
textField = UITextField(frame: CGRect(x: 0, y: 0, width: 97, height: 30))
self.addSubview(textField!)
textField!.text = self._text
}}
当我在代码中创建自定义控件的出口时,我可以set 文本属性,但我不能get 它。我究竟做错了什么 ?我是新人,所以我不明白...
编辑:
- 将 MyTextField 添加到 Main.storyboard 和标准文本字段
-
创建网点
@IBOutlet var myTextField: MyTextField!和标准文本字段
- 我对故事板的控制正确更新并且“测试文本”可见
-
添加一个按钮并创建一个动作出口
案例 1:工作正常
@IBAction func click(_ sender: UIButton) { myTextField.text = 标准TextField.text }
案例 2:不起作用
@IBAction func click(_ sender: UIButton) { standardTextField.text = myTextField.text }
在案例 2 之后,在标准文本字段中是我从对象检查器设置的唯一值。如果我更改 myTextField.text 的值,standardTextField 仍会显示来自对象检查器的原始值
【问题讨论】:
-
不能
get是什么意思?调用myTextField.text不会编译? -
@NRitH 请看我的编辑
标签: ios swift uitextfield