0

如何始终阅读 UITableView 中最上面的一行(cell.textLabel.text)?

我有两种略有不同的方法;

1:

UITableViewCell *cell2 = [tableView cellForRowAtIndexPath:indexPath];
NSString *cellText2 = cell2.textLabel.text;
NSLog (@" cellText2 = %@", cellText2);

2:

NSMutableString *newidea = [self.array objectAtIndex:indexPath.row];

NSLog (@"newidea = %@", newidea);

两个代码都在方法内- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

self.array 是填充 tableView 的相同数组。

前一种方法总是显示来自第六个单元格的文本。后一种方法总是显示来自第五个单元格的文本。在我的表格视图中,一次有四个单元格。@

我想要得到的是来自最上面的单元格的文本。

4

2 回答 2

4

我认为你有错误的方法。您不会从单元格中读取值,而是让单元格从数据数组中读取值。一个单元格总是可以有一个任意值,因为它们被重用了。即使您的表格视图中有 30 个“单元格”,也可能只有 5 个现有的实际单元格。当滚动时单元格超出表格视图时,它会移动到底部并作为下一个单元格重复使用。这就是为什么您总是必须为索引路径上的每个单元格设置值的原因。

相反,如果你有一个,你应该从你的数据数组中获取第一个单元格中的值。当表格视图询问单元格 attindexPath.row == 0应该具有什么标题时,您将其赋予 in cellForRowAtIndexPath,例如从一个名为“_cellTitles”的数组中给它,其中包含 30 个不同单元格的 30 个字符串。

如果你想从“最上面”的可见单元格中获取文本,那么你可以调用indexPathsForVisibleRows表格视图。返回数组中的第一个对象是最上方可见单元格的索引路径。您可以在索引 indexPath.row 处检查数组中的字符串。

例子:

NSArray *visibleRows = [self.tableView indexPathsForVisibleRows];
NSIndexPath *firstVisibleCell = [visibleRows objectAtIndex:0];
NSString *firstVisibleCellTitle = [_myDataArray objectAtIndex:indexPath.row];
于 2012-07-02T20:03:41.697 回答
0

如果你总是想从第一行读取,而不是 indexPath 只是说 1 那里。这样,它将始终从第一行读取。

于 2012-07-02T19:40:05.447 回答