3

我有一个表格视图单元格,其中有很多行带有 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。

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

4

4 回答 4

5

您应该以 UITableView 后面的数据源为目标。UITableView 只是一种显示机制,而不是获取数据的主要资源。您可以根据标题获取单元格的索引,但随后我会查看数据源以获取您的实际数据。更好的是,如果可能的话,我只会处理针对数据源本身的所有操作。当您最初构建表格时,您的数据源是某种列表或数组,我确信您可以使用它。您可能需要在视图上创建一个变量并将列表/数组保留在那里以确保您拥有它并且您应该已准备就绪。

祝你好运!

于 2012-05-14T21:20:46.737 回答
1

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

也就是说,您可能看不到您期望的数据,因为您正在使用出列单元格。如果单元格的数量很少,您可以考虑将自己的单元格缓存在NSDictionary其键是部分和行的某种组合中,并通过您自己的缓存访问它们的视图层次结构。

于 2012-05-14T21:31:29.533 回答
1

您可以通过直接引用所需的tableView's来访问当前未显示的行。dataSourceIndexPath

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

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

于 2017-09-28T09:17:55.507 回答
0

What is happening most likely is your reusing cells. So when your cell with the textfield goes off screen it gets reused so you cannot access it anymore. What you will need to do is grab the value out the the textfield right after they enter it and store it somewhere. You can use – textField:shouldChangeCharactersInRange:replacementString: so that when ever the user enters a character into the textfield you can save the string.

于 2012-05-14T21:29:12.823 回答