将字符串分配给另一个视图控制器中的文本字段

Posted

技术标签:

【中文标题】将字符串分配给另一个视图控制器中的文本字段【英文标题】:Assign strings to textfields in another view controller 【发布时间】:2017-04-17 14:11:52 【问题描述】:

我正在尝试获取 facebook 值,例如姓名和电子邮件,并将它们传输到另一个视图控制器,在那里它们填充相应的文本字段。但是,当我尝试使用此代码填充文本字段时

 let fbEmail = data["email"]
 let fbName  = data["name"]

 func prepare(for segue: UIStoryboardSegue, sender: Any?) 
       let vc = segue.destination as? CreateAccountVC
       vc!.emailTxt = self.fbName
       vc!.fullnameTxt = self.fbEmail
 

我收到一条错误消息,提示“无法将类型 String 分配给 UITextField 类型!”我在这里很困惑,因为我认为文本字段只接受字符串(我对编码/编程很陌生)。

所以基本上,我如何在一个视图控制器中收集这些值以填充另一个视图控制器中的文本字段?任何帮助将不胜感激!谢谢!

【问题讨论】:

【参考方案1】:

错误原因是您需要将其分配给UITextField 的文本属性。 您也可以使用变量来设置它们。并在您的CreateAccountVC 控制器的viewDidLoad 函数中设置textfield 的值。像这样:

您的第一个控制器用于获取 facebook 值:

let fbEmail = data["email"]
let fbName  = data["name"]

func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    if let vc = segue.destination as? CreateAccountVC 
           vc.emailTxtValue = self.fbName
           vc.fullnameTxtValue = self.fbEmail
    
 

你的 CreateAccountVC :

class CreateAccountVC: UIViewController 
   var emailTxtValue:String?
   var fullnameTxtValue:String?

   override func viewDidLoad() 
       super.viewDidLoad()
       emailTxt.text = emailTxtValue
       fullnameTxt.text = fullnameTxtValue
   

【讨论】:

哇,不敢相信我没听懂。但是,我只是尝试过,但没有填充文本字段。我可能使用了错误的功能来执行此操作吗? 它在我的测试中有效。但是我重新排列了代码行并更新了我的答案。它对我有用,我希望它对你有用:) 仍然无法正常工作,可能与我的代码的顺序/内容有关。我可以向您展示我的全部代码吗?

以上是关于将字符串分配给另一个视图控制器中的文本字段的主要内容,如果未能解决你的问题,请参考以下文章

如何将值传递给另一个视图控制器?

将按下的按钮传递给另一个 View JSON

ios 将 self 分配给另一个类中的属性

无法识别的选择器发送到实例...使用 segues 将字符串传递给另一个视图控制器

将文本字段转为字符串数组

如何测试字符串包含列表中的元素并通过 Pandas 将目标元素分配给另一列