如何解决无法识别的选择器发送到 UIButton 中的实例
我有一个集合视图和图像视图,我添加了一个 UIButton
以在选择后删除图像。当我单击按钮时,它崩溃并出现此错误:
AdPostViewController deleteUser]:无法识别的选择器发送到实例 0x7fb588d5b7f0
为什么会发生这种情况,我该如何解决?这是我的代码:
func collectionView(_ collectionView: UICollectionView,cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ImageCell",for: indexPath) as! ImageCell
let img = self.PhotoArray[indexPath.row]
cell.image.image = img
cell.deleteButton?.layer.setValue(indexPath.row,forKey: "index")
cell.deleteButton?.addTarget(self,action: Selector(("deleteUser")),for: UIControl.Event.touchUpInside)
return cell
}
func deleteUser(_ sender: UIButton) {
let i: Int = (sender.layer.value(forKey: "index")) as! Int
PhotoArray.remove(at: i)
// PhotoArray.removeAtIndex(i)
ImagesCollectionView.reloadData()
}
解决方法
一个问题是您强制手动形成Objective-C 选择器,而您实际上并不知道如何手动形成Objective-C 选择器,因此您弄错了。不要那样做!让编译器为您形成选择器。这就是它的工作。替换
action: Selector(("deleteUser"))
与
action: #selector(deleteUser)
此外,您需要明确地向 Objective-C 公开您的 deleteUser
方法:
@objc func deleteUser(_ sender: UIButton) {
否则,Objective-C 仍然无法内省您的类并在调用它时找到该方法。幸运的是,当您切换到 #selector
语法时,编译器会为您指出该问题!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。