如何从视图中获取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