繁体   English   中英

如何获取不可见的UITableViewCell的值?

[英]How can I get the value of a UITableViewCell that is not visible?

我有一个表格视图单元格,其中有很多行带有UITextView。 在那些UITextView中,用户可以输入值。

我遇到的问题是,如果要在隐藏行时获取行的值,则会得到nil。

NSString *cellValue = ((UITextField *)[[[self.table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]] contentView] viewWithTag:[self.table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]].tag]).text;

我正在考虑将用户输入的值保存在UITextField中,但是如果用户单击执行计算的行,则不会调用委托textFieldDidEndEditing。

我不知道如何以安全的方式获取此值。

您应该定位在UITableView后面的数据源。 UITableView只是一种显示机制,而不是获取数据的主要资源。 您可以根据标题获取单元格的索引,但是接下来我将寻找数据源来获取您的实际数据。 更好的是,如果可能的话,我将仅针对数据源本身执行所有操作。 最初建立表时,我相信数据源是某种列表或数组,因此可以使用它。 您可能需要在视图上创建一个变量,并将列表/数组保留在那里,以确保您拥有该变量,并且应该已全部设置好。

祝好运!

如前所述,通常将使用UITableView数据源来访问它。

就是说,您可能没有看到期望的数据,因为您正在使用出队的单元格。 如果单元数很少,则可以考虑将自己的单元缓存在NSDictionary该单元的键是节和行的某种组合,然后通过自己的缓存访问其视图层次结构。

最有可能发生的事情是您的重复使用细胞。 因此,当带有文本字段的单元格不在屏幕上时,它将被重用,因此您将无法再使用它。 您需要做的就是在输入值之后立即从文本字段中获取值并将其存储在某个位置。 您可以使用– textField:shouldChangeCharactersInRange:replacementString:这样,只要用户在文本字段中输入字符,就可以保存字符串。

您可以通过直接用所需的IndexPath引用tableViewdataSource来访问当前未显示的行。

您可以通过执行以下操作(使用Swift 3时 )来实现:

UITableViewCell cell = self.tableView(self.tableView, cellForRowAt: indexPath)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM