gpt4 book ai didi

uitableview - Swift - 在自定义单元格中添加长按手势识别器

转载 作者:可可西里 更新时间:2023-11-01 01:06:28 24 4
gpt4 key购买 nike

所以我在我的表格 View 中有一个自定义单元格类和一个 xib 文件,我想为自定义单元格添加长按识别。

我尝试将长按识别器拖放到 xib 文件中的单元格,使文件的所有者成为手势的委托(delegate),然后将其从文档大纲“拖放”到自定义类 swift 文件中。我还将 UIGestureRecognizerDelegate 添加到自定义单元格类。

现在,当我运行该应用程序时,出现线程 1:信号 SIGABRT 错误,老实说,我不知道为什么。这是我第一次使用手势识别器,如果有明显的错误或我应该做的事情,我深表歉意。

如有任何关于如何进行的建议,我们将不胜感激。

编辑: 正如洛根建议的那样,我取消了所有已完成的操作并按照他的步骤操作。我的自定义类中的代码现在如下所示:

@IBAction func pressed(sender: AnyObject) {

func handleLongPress(sender: UILongPressGestureRecognizer) {
if sender.state == .Began {
println("Received longPress!")
}
}
}

但我仍然得到错误。我注意到,如果我只是将手势添加到 xib 文件并运行应用程序,我会收到错误消息。我不知道那是不是因为我还没有将它连接到自定义类文件,但我想我应该把它扔掉。

编辑 2:将我的代码更改为:

@IBAction func pressed(sender: UILongPressGestureRecognizer) {
if sender.state == .Began {
println("Received longPress!")
}
}

我仍然得到错误。

我不知道我是否说清楚了,但我什至无法加载屏幕,它会立即崩溃。所以我认为这是一个委托(delegate)/引用问题,这是我的引用:

1) 我将 xib 文件所有者的类设置为自定义单元格类。2)我将手势识别器拖到单元格上。3) 我将手势对象拖到文件所有者,这样文件所有者就是它的代表。4) 我在自定义类中添加了上面的代码。5) 我将手势对象拖到文件所有者,以便手势在自定义类中“连接到代码”。

这些都是我的步骤,正如我所说,我怀疑某处存在委托(delegate)问题。

最佳答案

我遇到了类似的问题。问题是,当您将手势识别器添加到 xib 文件时,存在多个对象(您的 tableview 单元格和手势识别器)并且 tableview 数据源无法处理此问题。该错误正确描述了问题。我将我的 tableview 单元移动到主 Storyboard而不是将它保存在单独的 xib 文件中以解决此问题。

原因:“为标识符 (CELL) 注册的 nib 无效 - nib 必须恰好包含一个顶级对象,该对象必须是 UITableViewCell 实例”

您的问题的另一种解决方案是在代码中创建手势识别器,例如:

self.tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapFired:)];

在自定义表格 View 单元格的 awakeFromNib 中。

我只是认为基本问题是您不能在 TableView 单元格 xib 中添加手势识别器,然后让 TableView 数据源加载该单元格。

关于uitableview - Swift - 在自定义单元格中添加长按手势识别器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27788001/

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