Swift 循环遍历 UITableView 中的所有 UITextView
Posted
技术标签:
【中文标题】Swift 循环遍历 UITableView 中的所有 UITextView【英文标题】:Swift loop through all UITextViews from UITableView 【发布时间】:2018-05-18 18:38:59 【问题描述】:我生成了一个 TableView,其中包含我从 API 获取的项目列表。结果是它向我展示了一个带有 UILabel 和 UITextView 的 TableView。 该代码有效并给了我想要的结果:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell:FormCell = self.tableView.dequeueReusableCell(withIdentifier: "cell") as! FormCell
cell.formLabel.text = (self.fetchedData[indexPath.section] as! String)
// id is available = (self.fetchedDataID[indexPath.section] as! String)
return cell
class FormCell: UITableViewCell
@IBOutlet weak var formLabel: UILabel!
@IBOutlet var formAnswer: UITextView!
但现在我想在 UITextViews 中提交所有给定 formAnswer 的“答案”。如何做到这一点?
我想发布到 API 的结果类似于:
let params = [
"id-of-": "theValueOfTheFormAnswer", // every Value of each UITextView
] as [String : Any]
let requestURL = "/post-url"
let request = Alamofire.request(requestURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers: nil)
【问题讨论】:
在您担心发送值之前,您需要修复您的表格,以便它在用户滚动表格视图时正常工作。您在cellForRow
中没有代码来设置单元格的文本视图文本。
【参考方案1】:
您应该不尝试从表格视图的所有单元格中检索所有文本视图——这绝对不会起作用,因为单元格(及其所有子视图)可能会被重用,因此数据滚动离开屏幕的单元格将永远丢失。
相反,每次在数据模型中修改文本视图(或失去焦点等)时,您都必须存储数据。用户完成后,您只需将模型的数据发送到您的后端。
设置UITextViewDelegate
委托并通过以下方法之一更新模型:
【讨论】:
在哪个事件上? 你通常设置一个委托,然后在委托协议的一些方法中实现你的模型更新 不要将委托设置为单元格本身,也不要存储单元格内的任何数据。单元格是一个 UI 组件,仅用于显示数据。相反,在cellForRow
调用中将委托设置为视图控制器(以使事情变得简单)。
让它工作。谢谢。但 textViewDidEndEditing 仅在离开单元格的当前文本视图时触发。和 textViewDidChange 总是,但这会导致大量请求后端。以及如何获取填充的uitextview的indexpath?
要获取选定的单元格,请检查:***.com/questions/4318386/…以上是关于Swift 循环遍历 UITableView 中的所有 UITextView的主要内容,如果未能解决你的问题,请参考以下文章
在 Swift 中循环遍历 Alamofire JSON 结果