gpt4 book ai didi

ios - TableView :indexPath* always returning a nil IndexPath

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

我在我正在开发的应用程序中的表格单元格上设置长按手势时遇到了一些问题。我已经尝试了三种不同的配置,但还没有一种能够成功运行。

场景 1)

我将 UILongPressGestureRecognizer 添加到我的自定义 UITableViewCell 类,并在属于自定义单元格类的操作中处理操作(显示操作表)。这行得通,但引入了链接单元格正在渲染的对象的必要性,然后让我无法更新表格数据源(操作表用于删除项目)所以尽管有 UIActionSheet 设置,我还是放弃了这个工作正常。

场景 2)

UILongPressGestureRecognizer 添加到 TableView ,但由包含 TableView 的 Controller 处理它的操作(我使用的是通用 UITableView)。在我尝试做的手势识别器的操作中:

if (sender.state == UIGestureRecognizerStateBegan) {
CGPoint point = [sender locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point];

if (indexPath == nil)
return;

// Fetch item from index path and show action sheet
}

这在测试 if (indexPath == nil) 时失败了。

场景 3)

我找到了一个示例,在创建每个单元格时在每个单元格上添加 UILongPressGestureRecognizer,并且在包含 TableView 的 Controller 中仍然使用相同的处理程序。然后我将上面的测试更改为:

if (sender.state == UIGestureRecognizerStateBegan) {
NSIndexPath *indexPath = [self.tableView indexPathForCell:(MyCustomCell *)[sender view]];

if (indexPath == nil)
return;

// Fetch item from index path and show action sheet
}

同样,这在测试 if (indexPath == nil) 时不断失败。

为了获取索引路径,我必须在 TableView 上做些什么,还是我在错误的地方执行了这些检查?是否有更好的方法来添加(最好是不可见的)方式来显示删除确认?

编辑

添加额外信息以回应@Joel 的评论。

这是在模拟器中加载的有问题的 View :http://grab.by/rHTA

为了提供一些视觉信息, View 中的选定行(从顶部数第 3 行)是我将针对以下日志的上下文执行长按手势的行。

2013-11-03 10:42:08.434 Application[35392:70b] Long press point = (143.000000, 168.000000)
2013-11-03 10:42:08.434 Application[35392:70b] IndexPath is nil

正如您在日志 "IndexPath is nil" 中看到的那样,仅当 indexPath == nil 评估为 true TableView 未返回索引时才会打印点的路径。该点在表格框架内有效。

这是使用我为场景 2 列出的相同设置执行的。

最佳答案

我将此作为答案,因为它解决了我的问题。

我很抱歉让每个人都被这个问题困扰,但事实证明核心问题是未能将 TableView 链接到 View Controller 中的 IBOutlet ,我最初这样做但一定是不小心在尝试实现此长按问题时已删除。

将链接添加回 View Controller ,这样 self.tableView 本身就不再是 nil 我开始获得准确的结果。

我很抱歉之前没有验证这样简单的事情,以后会注意的。感谢 @Joel 和 @rdelmar 试图让我走上正轨,但正如你们所说,只要相应地设置其他所有内容,每个场景都应该工作(并且确实如此)。

关于ios - TableView :indexPath* always returning a nil IndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19750192/

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