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 中传递选定的行

在 Swift 中的表格视图中填充数据的问题

使用 segue 的参数调用函数

segueing时出现核心数据错误:无法在NSManagedObject类上调用指定的初始值设定项

查找单击了哪个单元格并执行 Segue