segue 后填充 textfield.text
Posted
技术标签:
【中文标题】segue 后填充 textfield.text【英文标题】:Populate textfield.text after segue 【发布时间】:2020-09-17 11:40:35 【问题描述】:我有一个表演类型的转场。我希望destinationViewController nameTextField
在执行segue 时在其中包含一些文本。我试着做:
override func prepare (for segue: UIStoryboardSegue, sender: Any?)
if segue.identifier == "ToEditScreen"
let svc = segue.destination as! EditViewController
svc.nameTextField.text = cars[selectedIndex!].name //crashes
svc.nameString = cars[selectedIndex!].name
我得到的错误是:在隐式展开可选值时意外发现 nil。
我知道cars[selectedIndex!].name
不是零。
如果我删除文本字段行,一切都很好,nameString
确实得到了等于cars[selectedIndex!].name
的值。我知道我能做到:
nameTextField.text = randomString
但这似乎是一个额外的步骤。我可以从原始ViewController
填充 textfield.text 吗?
【问题讨论】:
此时未加载视图。您需要在EditViewController
中覆盖 viewDidLoad
方法并填充 textField。也有讨厌的方法,在let svc = segue.destination....
之后直接调用svc.loadViewIfNeeded()
为什么不好?
【参考方案1】:
您可以将字符串变量添加到目标 vc 并将其设置在那里或
let svc = segue.destination as! EditViewController
svc.loadViewIfNeeded() // add this line
svc.nameTextField.text = cars[selectedIndex!].name
【讨论】:
以上是关于segue 后填充 textfield.text的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 segue 准备功能中访问 TableView 索引路径?
objectAtIndex 没有在 segue 中传递选定的行