ios - 捕获 TableViewCell 中的 TextView 值,当在 segueing 之前按下另一个 TableViewCell 中的按钮时?
问题描述
我有以下表格视图:
当用户单击蓝色的支付现金/卡按钮时,他们会转到另一个 tableView。
我的问题是;当用户单击按钮时,textView 的值不会在委托方法中被捕获。例如,我已经实现了“TextView”协议并从 TextView 类中实现了以下功能:
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if(text == "\n") {
textView.resignFirstResponder()
return false
}
return true
}
func textViewDidBeginEditing(_ textView: UITextView) {
if textView.textColor == UIColor.lightGray {
textView.text = nil
textView.textColor = UIColor.black
}
}
func textViewDidEndEditing(_ textView: UITextView) {
if textView.text.isEmpty {
textView.text = "Enter a note for the takeaway (optional)"
textView.textColor = UIColor.lightGray
} else {
self.note = textView.text
}
}
如您所见,如果我输入一些文本,然后单击 Done 按钮,在单击 segue 按钮之前,我能够成功传递值。但是,如果用户在单击完成之前单击蓝色 segue 按钮,它会继续,我不确定如何捕获 textView 的值。我的按钮委托的代码如下,我还通过了 prepareForSegue 方法。
我希望我想要实现的目标是有意义的;我确实很难解释事情,所以如果我不清楚,请告诉我,我会尝试进一步扩展。
谢谢,J
func buttonPressed() {
performSegue(withIdentifier: "showNameAddress", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(segue.identifier == "showNameAddress") {
let nameAddressTableViewController = segue.destination as! NameAddressTableViewController
if(self.delivery == true) {
nameAddressTableViewController.delivery = true
nameAddressTableViewController.finalPrice = self.basket.totalPriceOfAllItems() + Double(BasketArrays.deliveryCharge)!
} else {
nameAddressTableViewController.delivery = false
nameAddressTableViewController.finalPrice = self.basket.totalPriceOfAllItems()
}
nameAddressTableViewController.note = self.note
nameAddressTableViewController.show(self, sender: nil)
}
}
解决方案
您可以在 中捕获字符串的值func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool
。
我没有测试过这段代码,但它看起来像:
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange,
replacementText text: String) -> Bool {
if(text == "\n") {
textView.resignFirstResponder()
return false
}
self.note = textView.text + text
return true
}
这样,您的self.note
变量始终与每次按键的更改保持同步。
希望这可以帮助。
推荐阅读
- c - 使用 C 解析巨大的 XML 页面时如何解决“返回 null”
- c# - 提交具有非顺序索引/位置的列表/集合
- python - 获取熊猫 groupby 对象中多列的最大聚合
- asp.net - 使用 PowerShell 进行共享点开发
- python - pandas ewm().std() 的 numpy 等价物是什么?
- c# - Unity 虚拟现实:关于输入的问题
- arrays - 将两行与数组公式进行比较以识别差异并返回“上次更改日期”
- java - 收集 JSON 的 Webhook:不支持请求方法 POST
- docker - Docker - 已安装 mysql db 但未创建用户
- sql - 我需要使用 SQL 查询将数据从 crsp(在 wrds 数据库中)导入到 R