在 didSelectAtRow 时将数据传递给下一个 viewController 的 UITextField

Passing data to UITextField for next viewController when didSelectAtRow

当我尝试将数据从一个视图控制器传递到另一个彻底 didSelectRowAt 时,应用程序崩溃了。

如何使用 didSelectAtRow 将数据传递到另一个视图控制器的文本字段?

这是我的代码

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
     let  vc = self.storyboard?.instantiateViewController(withIdentifier: "DiscountDetailsController") as! DiscountDetailsController

     // MARK: This one is not setting data to textField in next view controller
     vc.offerName.text = discountArray?[indexPath.row].offerName

     // vc.offerValue.text = String((discountArray?[indexPath.row].percentage)! )
     // vc.delete.isHidden = false

     self.navigationController?.pushViewController(vc, animated: true)
}

您不应该尝试直接操作另一个视图控制器的视图。这违反了封装原则。 (这是糟糕的设计,可能会导致像您所描述的那样的错误。)

相反,给你的 DiscountDetailsController 一个字符串 属性 offerNameString。在上面的 didSelect 方法中设置 属性,然后在 DiscountDetailsController 的 viewWillAppear 中,根据需要将 offerNameString 安装到视图中。

我不明白你的“...不是在传递数据时它崩溃了。”陈述。你的代码崩溃了吗?如果是这样,可能是因为您的 DiscountDetailsControllerofferName 属性 是一个隐式展开的可选值,它是 nil。那会导致崩溃。