![](/img/trans.png)
[英]How to access from viewController another viewController in Swift 3
[英]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
錯誤:未解析的標識符
看起來您實際上只想訪問 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!
您需要將 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()
}
你已經完成了
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.