• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 你如何获得你正在点击的单元格的 indexPath?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:43:57 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

当在 UITableView 中的单元格上执行长按时,我正在尝试执行 IBAction。该操作涉及单元格的内容,因此我需要获取 indexPath 以便从本地存储中的字典中检索内容。 IBAction 方法在包含 UITableView 方法的 MasterViewController.m 文件中定义,并且是 UITableViewController 的子类。我已经尝试了以下所有方法,它们都返回 null 而不是单元格的 indexPath。

UITableViewCell *cell = (UITableViewCell *)self;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];

NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

我还看到了几年前使用 View 中单元格位置的类似问题的答案,但我也无法让其中任何一个工作。

更新: IBAction,sendToPB,是在 UITableViewController 的子类中定义的。 Interface Builder 的单元格中添加了一个长按手势识别器,Sent Actions 连接到 sendToPB。当您长按表格 View 中的单元格时,该操作应该是将单元格的内容复制到剪贴板。到目前为止,我尝试过的所有方法都为 indexPath 返回 null。

- (IBAction)sendToPBid)sender {
    NSIndexPath *indexPath = [self.tableView indexPathForCell:sender];
    NSString *object = self.objects[indexPath.row];
    UIPasteboard *pb = [UIPasteboard generalPasteboard];
    NSString *pressedCellText = [[Data getAllNotes] objectForKeybject];
    [pb setString: pressedCellText];
}

更新: 我发现这种方法有两个问题。首先,长按手势实际上并没有选择行,这就是所有使用 indexPathForSelectedRow 的选项都不起作用的原因。其次,sender 是手势识别器,而不是单元格或行,因此使用 sender 也会为 indexPath 生成空值。考虑到这两个因素,您还能如何检测您在哪个单元格上执行了长按?



Best Answer-推荐答案


你可以在 longPressGesture 上像这样获得 indexPath!

-(void)handleLongPressUILongPressGestureRecognizer *)gestureRecognizer
{
     CGPoint p = [gestureRecognizer locationInView:self.myTableView];

     NSIndexPath *indexPath = [self.myTableView indexPathForRowAtPoint:p];
     if (indexPath == nil) {
         NSLog(@"long press on table view but not on a row");
     } 
     else if (gestureRecognizer.state == UIGestureRecognizerStateBegan) 
     {

         NSLog(@"long press on table view at row %d", indexPath.row);
     } 
     else 
     {
         NSLog(@"gestureRecognizer.state = %d", gestureRecognizer.state);
     }
}

也许这个链接会对你有所帮助more

关于ios - 你如何获得你正在点击的单元格的 indexPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26727506/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap