Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:如何防止在滚动时取消未显示的UITableViewCells_Ios_Xcode_Swift_Uitableview_Tableviewcell - Fatal编程技术网

Ios Swift:如何防止在滚动时取消未显示的UITableViewCells

Ios Swift:如何防止在滚动时取消未显示的UITableViewCells,ios,xcode,swift,uitableview,tableviewcell,Ios,Xcode,Swift,Uitableview,Tableviewcell,我有一个UITableViewController,它有许多单元格,每个单元格都包含一种来自用户的输入(日期选择器、选择器视图、文本字段和文本视图)。当用户输入完数据后,点击一个合适的按钮保存所有数据,但问题是我只能从点击按钮时屏幕上可见的单元格中收集数据;上一个和下一个将被取消,它们的内容将丢失,当滚动到表的该部分时,它们将被加载。这样,我将永远无法收集所有数据。有没有办法绕过这件事,防止这些细胞被解雇?还是有更聪明的方法来获取我需要的内容?您不应该设计让单元格(视图)负责保存用户的数据。使用

我有一个UITableViewController,它有许多单元格,每个单元格都包含一种来自用户的输入(日期选择器、选择器视图、文本字段和文本视图)。当用户输入完数据后,点击一个合适的按钮保存所有数据,但问题是我只能从点击按钮时屏幕上可见的单元格中收集数据;上一个和下一个将被取消,它们的内容将丢失,当滚动到表的该部分时,它们将被加载。这样,我将永远无法收集所有数据。有没有办法绕过这件事,防止这些细胞被解雇?还是有更聪明的方法来获取我需要的内容?

您不应该设计让单元格(视图)负责保存用户的数据。使用数据结构将其存储在中。数组怎么样

更新: 首先,我很确定这个问题已经有答案了,但我正在打电话,所以我不会试图找到答案。不过,你最好还是这样做

可以这样想:当一个单元被重用时,你没有真正的控制权。但是,只要您有权访问单元格上的文本字段(通过插座或使用标记),您只需找到一种方法,在它们出现在屏幕上时开始收听


我相信您可以确定在数据源中的何处执行此操作,以及实际需要多少文本字段侦听器

我使用NSUserDefaults存储表单数据,如下所示

  NSUserDefaults.standardUserDefaults().setObject(value: AnyObject?, forKey: String)
现在,您可以通过以下方式获取数据:
NSUserDefaults.standardUserDefaults().objectForKey(“firstCell”)

因此,基本上在用户完成键入后,您可以
setObject
,这将是textField.text或textView.text属性。然后设置一个键。比如“第一单元”、“第二单元”等等


稍后,您可以使用`objectForKey(“firstCell”)

获得该值,无需修改用户的首选项(除非在这种特定情况下有用),数据源中的一个简单的
字典将完成此操作job@YichenBman:这听起来很有趣,但如果向单元格添加一个键,那么该单元格将被取消。因此,即使我使用该键从该单元格中获取文本,如果该单元格不在显示中,它也将为零。也许我在你的答案中遗漏了什么…@Vinzzz我也这么想,但我只是很难理解一件事:我可以在我的cell swift类中实现TextFieldEditingDiEnd方法,该类包含一个UITextField。因此,当用户在单元格内完成输入后,该字符串将存储到字典中的数组o中,如您所说。问题是:那么,如果全局数组在table view控制器类中,我如何存储该文本呢?好吧,一旦数据和视图分离(并且在滚动表格和重复使用单元格时不会丢失用户编辑),您如何处理数据就取决于您了!您可以使用
NSCoding
、CoreData或任何其他工具来存储它。但至少,你不必阻止用户滚动列表……这就是我想做的,但我很难理解一件事:我可以在包含UITextField的cell swift类中实现TextFieldEditingDiEnd方法。因此,当用户在单元格内完成输入后,该字符串将存储到字典中的数组o中,如您所说。问题是:那么,如果全局数组在table view controller类中,我如何存储该文本?可能不需要按照您描述的方式在单元格中临时存储任何内容,只要您可以从控制器访问单元格的文本字段。我会在回答中澄清。