获取 UITableView 中最近添加的行的 indexPath

Posted

技术标签:

【中文标题】获取 UITableView 中最近添加的行的 indexPath【英文标题】:Get indexPath of recent row add in UITableView 【发布时间】:2013-07-05 09:33:05 【问题描述】:

我有一个问题:我想获取最近添加到 UITableView 上的单元格的 indexPath。 这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    //[_tableView clearsContextBeforeDrawing];
    static NSString *simpleTableIdentifier = @"SimpleTableItem";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) 
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];

    


    cell.tag = indexPath.row;

    CGRect frame1 = CGRectMake(10, 25, 80, 10);
    UILabel *lbl2= [[UILabel alloc]initWithFrame:frame1];
    [lbl2 setFont:[UIFont fontWithName:@"Helvetica" size:8.5]];
    [lbl2 setTextColor:[UIColor blackColor]];
    [lbl2 setTextAlignment:UITextAlignmentLeft];
    lbl2.text = [FileDateArray objectAtIndex:indexPath.row];
    [cell addSubview:lbl2];
    [lbl2 release];

    deleteIndexPath = indexPath.row;
    NSLog(@"Delete index:%@",deleteIndexPath);

    return cell;


在我的 tableview 上,一次只添加了一行。 当我在控制台上打印时,deleteIndexPath 为空。你有什么建议吗?

【问题讨论】:

您的 deleteIndexPath 类型是什么?是 Int 吗?但是为什么 NSLog 它是对象呢? NSLog(@"%ld",(long)indexPath.row);记录并检查。 @brianLikeApple : 是 NSIndexPath 类型 如何添加新行? @NGOT 如果它是一个 NSIndexPath 类型,那么你不认为你需要像deleteIndexPath = indexpath;那样使用它 【参考方案1】:

我不清楚你想要什么。我可以假设以下三种可能性。请检查是否有任何你想要的。如果不是,请告诉我您想要哪个索引路径以及您想要访问它的位置。

如果您想获取 tableView 的最后一个索引路径,可以尝试如下:

NSIndexPath *lastIndexPath = [NSIndexPath indexPathForRow:[FileNameArray count] - 1 inSection:0];

这将返回您的 tableview 可能的最后一个索引路径。

如果您想获取可见单元格的索引路径,则可以使用

NSArray *visibleCellIndexPaths = [yourTableViewObject indexPathsForVisibleRows];

如果您想获取最后一个可见单元格的索引路径,则可以使用

[[yourTableViewObject indexPathsForVisibleRows] lastObject];

更新

您想要获取 tableview 第一行的索引路径,而不是使用第一个解决方案只需在行中传递 0。

NSIndexPath *lastIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];

因为行和节的索引都是从 0 开始的。由于您只有一个部分,因此部分的索引为 0,并且您希望获得第一行,因此第一行的索引为 0。

希望对你有所帮助。

【讨论】:

感谢 Kapil Choubisa,我想获取 tableview 中第一行的索引路径。你给我看吗?非常感谢 @NGOT 请检查更新后的答案,如果满足您的要求,请将其标记为已接受的答案。 我写了一个 updatearray 函数,它在 2 秒后调用循环,所以我使用你的代码获取第一行的 indexpath,调用 updatearray 函数后 IIndexPath 发生了变化。所以它不起作用。 无所谓.. 第一行的索引路径将始终为 0,0。但是是的,您的索引路径的单元格将被更改。在这种情况下,您必须存储单元格而不是 indexpath 我想是的,你能告诉我如何存储单元格而不是索引路径吗?非常感谢

以上是关于获取 UITableView 中最近添加的行的 indexPath的主要内容,如果未能解决你的问题,请参考以下文章

如何快速获取UITableView中每个动态创建的行的textvalue

UITableView 在保留已经获取的行的同时插入更多行

用于在 Swift 中删除 UITableView 中的行的编辑按钮不起作用

UITableView 中同时插入/删除行的问题

UITableView中默认重新加载后如何记住选择的行并维护它们?

XCode为不同的行编辑UITableView textFields