如何从另一个ViewController(Swift)访问UITextField中的文本?

时间:2015-08-26 19:09:42

标签: ios swift uitextfield

我在一个ViewController上有一个UITextField,我希望能够在第二个ViewController上有一个Label =用户输入的内容。

但是,尝试执行此操作时出错。我知道Swift不使用import,所以我不知道该怎么做。

// First View Controller

 @IBOutlet weak var textOne: UITextField!

// Second View Controller

    @IBOutlet weak var theResult: UILabel!

theResult.text = textOne.text

错误:未解析的标识符

2 个答案:

答案 0 :(得分:4)

看起来您实际上只想从UITextField访问文本而不是字段本身。因此,您应该使用prepareForSegue将文本从第一个ViewController发送到第二个ViewController。

但之前,您必须设置segue的名称,以便Swift知道要发送的数据:

enter image description here

如您所见,我们将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!

答案 1 :(得分:2)

您需要在prepearForSegue中将对FirstViewController实例的引用传递给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()
}

你已经完成了