菜鸟教程小白 发表于 2022-12-13 09:43:57

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


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

<pre><code>UITableViewCell *cell = (UITableViewCell *)self;
NSIndexPath *indexPath = ;

NSIndexPath *indexPath = ;

NSIndexPath *indexPath = ;
</code></pre>

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

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

<pre><code>- (IBAction)sendToPB:(id)sender {
    NSIndexPath *indexPath = ;
    NSString *object = self.objects;
    UIPasteboard *pb = ;
    NSString *pressedCellText = [ objectForKey:object];
    ;
}
</code></pre>

<p><strong>更新:</strong>
我发现这种方法有两个问题。首先,长按手势实际上并没有选择行,这就是所有使用 <code>indexPathForSelectedRow</code> 的选项都不起作用的原因。其次,<code>sender</code> 是手势识别器,而不是单元格或行,因此使用 <code>sender</code> 也会为 <code>indexPath</code> 生成空值。考虑到这两个因素,您还能如何检测您在哪个单元格上执行了长按?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你可以在 longPressGesture 上像这样获得 indexPath!</p>

<pre><code>-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
   CGPoint p = ;

   NSIndexPath *indexPath = ;
   if (indexPath == nil) {
         NSLog(@&#34;long press on table view but not on a row&#34;);
   }
   else if (gestureRecognizer.state == UIGestureRecognizerStateBegan)
   {

         NSLog(@&#34;long press on table view at row %d&#34;, indexPath.row);
   }
   else
   {
         NSLog(@&#34;gestureRecognizer.state = %d&#34;, gestureRecognizer.state);
   }
}
</code></pre>

<p>也许这个链接会对你有所帮助<a href="https://stackoverflow.com/questions/3924446/long-press-on-uitableview" rel="noreferrer noopener nofollow">more</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 你如何获得你正在点击的单元格的 indexPath?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26727506/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26727506/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 你如何获得你正在点击的单元格的 indexPath?