如何从另一个 ViewController (Swift) 访问 UITextField 中的文本?
How do I access text in UITextField from another ViewController (Swift)?
我在一个 ViewController 上有一个 UITextField,我希望在第二个上有一个标签 ViewController = 无论用户输入什么。
但是,我在尝试执行此操作时遇到错误。我知道 Swift 不使用导入,所以我不确定该怎么做。
// First View Controller
@IBOutlet weak var textOne: UITextField!
// Second View Controller
@IBOutlet weak var theResult: UILabel!
theResult.text = textOne.text
错误:无法解析的标识符
您需要将对 FirstViewController 实例的引用传递给 prepearForSegue 中的 SecondViewController 实例...
然后做这样的事情
//FirstViewController
@IBOutlet weak var textOne: UITextField!
func getTextOne () -> String? {
return textOne.text
}
//SecondViewController
@IBOutlet weak var theResult: UILabel!
var firstViewControllerInstance: FirstViewController?
func showResult () {
theResult.text = firstViewControllerInstance?.getTextOne()
}
大功告成
看起来您实际上只想访问 UITextField 中的文本,而不是字段本身。因此,您应该使用 prepareForSegue
将文本从第一个 ViewController 发送到第二个 ViewController。
但在此之前,您必须设置您的 segue 名称,以便 Swift 知道要发送哪些数据:
如您所见,我们将 segue 命名为 segueTest
。
所以现在我们可以在 FirstViewController 中实现 prepareForSegue 方法并设置应该发送给第二个的数据。
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "segueTest") {
var svc = segue!.destinationViewController as secondViewController;
svc.theText = yourTextField.text
}
}
你可以做到这一点,当然你必须在你的 SecondViewController 中设置一个变量:
var theText:String!
我在一个 ViewController 上有一个 UITextField,我希望在第二个上有一个标签 ViewController = 无论用户输入什么。
但是,我在尝试执行此操作时遇到错误。我知道 Swift 不使用导入,所以我不确定该怎么做。
// First View Controller
@IBOutlet weak var textOne: UITextField!
// Second View Controller
@IBOutlet weak var theResult: UILabel!
theResult.text = textOne.text
错误:无法解析的标识符
您需要将对 FirstViewController 实例的引用传递给 prepearForSegue 中的 SecondViewController 实例...
然后做这样的事情
//FirstViewController
@IBOutlet weak var textOne: UITextField!
func getTextOne () -> String? {
return textOne.text
}
//SecondViewController
@IBOutlet weak var theResult: UILabel!
var firstViewControllerInstance: FirstViewController?
func showResult () {
theResult.text = firstViewControllerInstance?.getTextOne()
}
大功告成
看起来您实际上只想访问 UITextField 中的文本,而不是字段本身。因此,您应该使用 prepareForSegue
将文本从第一个 ViewController 发送到第二个 ViewController。
但在此之前,您必须设置您的 segue 名称,以便 Swift 知道要发送哪些数据:
如您所见,我们将 segue 命名为 segueTest
。
所以现在我们可以在 FirstViewController 中实现 prepareForSegue 方法并设置应该发送给第二个的数据。
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "segueTest") {
var svc = segue!.destinationViewController as secondViewController;
svc.theText = yourTextField.text
}
}
你可以做到这一点,当然你必须在你的 SecondViewController 中设置一个变量:
var theText:String!