如何从 StackView 内的 UITextfield 获取文本
Posted
技术标签:
【中文标题】如何从 StackView 内的 UITextfield 获取文本【英文标题】:How to get the text from a UITextfield inside a StackView 【发布时间】:2018-10-23 18:25:14 【问题描述】:我正在尝试从我在 stackview 中创建的文本字段中获取文本,但我无法做到。我想知道是否有人可以帮助我。
例如,我想要做的是: 当我按下按钮时 Label.text = myTextField.text.
这是我的代码:
var mySttackView: UIStackView =
//NAMETEXTFIELD
let myTextField = UITextField() //<---- want to get the text from this when I press a button but I can't get access to it
myTextField.translatesAutoresizingMaskIntoConstraints = false
myTextField.placeholder = "MY TEXT"
let theStackview: UIStackView = UIStackView(arrangedSubviews: [myTextField])
theStackview.axis = .vertical
theStackview.translatesAutoresizingMaskIntoConstraints = false
theStackview.distribution = .fillEqually
theStackview.spacing = 12
return allTextFields
()
【问题讨论】:
您是否尝试过使用堆栈视图的arrangedSubviews
属性?展示你所做的尝试。
“我做不到”。当你尝试时会发生什么?
我的意思是当我尝试打字的时候。标签.text = myTextField.text。在 ViewDidLoad
myTextField
的范围仅限于创建堆栈视图的闭包(因为它是在此处声明的)。要像这样访问它,您需要将它声明为类的实例变量。
如果你能告诉我你在代码中的意思,我将不胜感激,因为我是编程新手,英语不是我的第一语言:)
【参考方案1】:
如果您想访问myTextField
,请在创建UIStackView
的闭包之外声明它。
如果myTextField
和myStackView
是实例变量,则myStackView
-creating 闭包不能引用myTextField
,除非您还将myStackView
声明为lazy
。
let myTextField = UITextField()
lazy var myStackView: UIStackView =
myTextField.translatesAutoresizingMaskIntoConstraints = false
myTextField.placeholder = "MY TEXT"
let theStackview: UIStackView = UIStackView(arrangedSubviews: [myTextField])
theStackview.axis = .vertical
theStackview.translatesAutoresizingMaskIntoConstraints = false
theStackview.distribution = .fillEqually
theStackview.spacing = 12
return theStackview
()
【讨论】:
感谢您的帮助!以上是关于如何从 StackView 内的 UITextfield 获取文本的主要内容,如果未能解决你的问题,请参考以下文章
在水平 StackView 内的 TextView 中删除 Padding top