我正在尝试将文本从其他 ViewController 传递到 TextView
:
if (segue.identifier == "HomeToDetails") {
let nav = segue.destination as! UINavigationController
let nextVC = nav.topViewController as! DetailsViewController
nextVC.infoTextView.text = "TESTING"
}
但是它崩溃了:
fatal error: unexpectedly found nil while unwrapping an Optional value
最佳答案
在 prepareForSegue:sender
中不可能在 DestinationViewController
的 UITextField
上设置文本,因为最近分配的 Controller 的所有 View 组件都不是在加载 View 之前初始化(此时,它们都是 nil),它们只会在加载 DestinationViewController
View 时进行。
您需要在 DetailsViewController
中使用可选变量 infoString
,您可以在 prepareForSegue
方法中设置
if (segue.identifier == "HomeToDetails") {
let nav = segue.destination as! UINavigationController
let nextVC = nav.topViewController as! DetailsViewController
nextVC.infoString = "TESTING"
}
在 DetailsViewController.swift
中
class DetailViewController: UIViewController {
var infoString: String?
override func viewDidLoad() {
super.viewDidLoad()
if let info = infoString {
self.infoTextView.text = info
}
}
}
关于ios - 通过 Segue 将文本传递给 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42086499/