gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:41:56 24 4
gpt4 key购买 nike

我正在尝试在长按 UITableView 中的单元格时执行 IBAction。该操作涉及单元格的内容,因此我需要获取 indexPath 以便从本地存储中的字典中检索内容。 IBAction 方法在 MasterViewController.m 文件中定义,该文件包含 UITableView 方法并且是 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 的单元格中添加了一个长按手势识别器,发送的操作连接到 sendToPB。当您长按表格 View 中的单元格时,该操作应该是将单元格的内容复制到剪贴板。到目前为止,我尝试过的所有方法都会为 indexPath 返回 null。

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

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

最佳答案

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

-(void)handleLongPress:(UILongPressGestureRecognizer *)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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com