【发布时间】:2019-01-22 02:30:51
【问题描述】:
当用户点击 tableview 的行并应用 segue 时,我想禁用 textfield 的用户交互。我哪里出错了?当我在 tableview 中选择行时,出现“线程 1:致命错误:在展开可选值时意外发现 nil”错误。
这是我的 ViewController 类及其必要的功能
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
self.selectedTrip = dateArray[indexPath.row]
performSegue(withIdentifier: "toDetailsVC", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toDetailsVC" {
let destinationVC = segue.destination as! detailsViewController
destinationVC.kmField.isUserInteractionEnabled = false
}
}
和kmField在detailsVC中是这样的
@IBOutlet weak var kmField: UITextField!
【问题讨论】:
-
你应该放一个断点并检查哪个值是 nil。您的问题听起来像是在您到达 textField 之前。将编译器在控制台中遇到的任何问题与您的问题一起发布会很有帮助,因为您的问题的根源可能已经说明了。
-
我检查了它,编译器将 kmField 视为 nil。
-
猜测视图尚未渲染。也许您可能想将
kmField.isUserInteractionEnabled = false移动到 DetailsViewController 的viewDidLoad/viewDidAppear并在那里处理它,而不是尝试操作尚未加载的内容。 -
您是否将情节提要上的这个 segue id 设置为DetailsVC
-
是的,我做到了。