如何从视图中获取UITableViewCell并将其滚动到视图中

在我的代码中,当用户向列表添加新项目时,应用程序将其添加到项目数组中,对它们进行排序,然后调用[tableView reloadData] 。 由于对列表进行排序,有时新添加的项目会消失。 当它不在视图中时,我将获得新添加项目的UITableViewCell并将其滚动回视图。

cellForRowAtIndexPath我将记录添加到每个单元格的标记中:

 cell.tag = listItems.recordID; 

addNewItem方法中添加新项并对项进行排序后:

 for (int i = 0; i<listItems.count; i++) { NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0]; UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; int tag = cell.tag; if (tag == newItemRecordID) [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; } 

当单元格不在视图时, tag属性返回0并且我无法获取单元格。

怎么可能得到那个细胞?

我想,最好使用这样的东西:

 for (int i = 0; i < listItems.count; i++) { // Replace 'ListItem' with the name of your class. ListItem *listItem = [listItems objectAtIndex:i]; if (listItem.recordID == newItemRecordID) { NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0]; [self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; break; } } 

cellForRowAtIndexPath设置单元格标记如下:

 cell.tag = indexPath.row; 

设置单元格标签后,您可以调用您的函数:

 for (int i = 0; i