Swift:如何防止在滚动

时间:2015-09-14 22:45:20

标签: ios xcode swift uitableview tableviewcell

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

2 个答案:

答案 0 :(得分:2)

您不应将单元格(视图)设计为负责保留用户的数据。使用数据结构存储它。数组怎么样?

更新: 首先,我非常确定这个问题已经有了答案,但我已经在手机上了,所以我不会试图找到它。但是,你做得很好。

以这种方式思考:您无法真正控制何时重复使用单元格。但是,只要您可以访问单元格上的文本字段(通过插座或使用标签),您只需要找到一种方法,当它们出现在屏幕上时开始收听它们。

我确定您可以找出数据源中的位置,以及您实际需要多少文本字段侦听器。

答案 1 :(得分:1)

我使用NSUserDefaults来存储这样的表单数据。

  NSUserDefaults.standardUserDefaults().setObject(value: AnyObject?, forKey: String)

现在,您可以通过以下方式获取数据:NSUserDefaults.standardUserDefaults().objectForKey("firstCell")

因此,基本上在用户完成输入后,您setObject将是textField.text或textView.text属性。然后设置一个键。像“firstCell”,“secondCell”等。

稍后通过使用`objectForKey(“firstCell”)

获取值