我试图将一个对象从一个视图控制器传递到另一个视图控制器,但接收器接收到nil并抛出一个错误:致命错误:在隐式展开可选值时意外发现nil: file
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "sPropSegue" {
if let indexPath = tableView.indexPathForSelectedRow {
let prop = modelProperty.props[indexPath.row]
let dVeiwController = segue.destination as? PDViewController
detailVeiwController?.property = prop
}
}
}
UIViewController中的代码
var property: Property!
override func viewDidLoad() {
super.viewDidLoad()
propImage.image = UIImage(named: property.imageName)
priceLable.text = property.price
addressTextView.text = property.address //propImage.image = UIImage()
// Do any additional setup after loading the view.
}
请帮我解决这个问题。
提前感谢!
您需要确保从源vc(而不是表单元格)建立segue到目标vc,以便override func prepare(for segue
被称为
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier:"sPropSegue",sender:nil)
}
根据我的理解,你没有在你的PDViewController中获得属性对象。
所以试着调试它。确保prop不是nil
尝试在注释viewDidLoad()代码后执行相同的代码。
还要确保在你想要执行segue的控制器中有self.table.delegate = self