在 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
安装到视图中。
我不明白你的“...不是在传递数据时它崩溃了。”陈述。你的代码崩溃了吗?如果是这样,可能是因为您的 DiscountDetailsController
的 offerName
属性 是一个隐式展开的可选值,它是 nil。那会导致崩溃。
当我尝试将数据从一个视图控制器传递到另一个彻底 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
安装到视图中。
我不明白你的“...不是在传递数据时它崩溃了。”陈述。你的代码崩溃了吗?如果是这样,可能是因为您的 DiscountDetailsController
的 offerName
属性 是一个隐式展开的可选值,它是 nil。那会导致崩溃。