ios - ViewController 不符合协议(protocol) AnyObject 错误与 UISwipeGestureRecognizer

标签 ios swift

我在尝试实现滑动手势时遇到此错误:

var swipeGesture = UISwipeGestureRecognizer(target: self, action: slideToRightWithGestureRecognizer)

func slideToRightWithGestureRecognizer() {

}

我的 ViewController 看起来像这样:

class ViewController: UIViewController, UIGestureRecognizerDelegate {

}

我在 target: self 上收到错误,我是否必须实现一些委托(delegate)或还有什么问题?

最佳答案

我假设 swipeGesture 是一个属性 - 在这种情况下,问题是您在属性初始化期间引用了 self,这是不允许的,因为 在所有属性都已初始化之前,self 不可用。

我认为解决这个问题的最佳方法是在 viewDidLoad 方法中初始化该属性,但当然该属性必须是可选的 - 我认为在中使用隐式展开的属性是安全的这种情况:

var swipeGesture: UISwipeGestureRecognizer!

override func viewDidLoad() {
    super.viewDidLoad()

    self.swipeGesture = UISwipeGestureRecognizer(target: self, action: "slideToRightWithGestureRecognizer")
}

关于ios - ViewController 不符合协议(protocol) AnyObject 错误与 UISwipeGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27104968/

相关文章:

ios - Safari Web 检查器在调试 iPhone 时不显示元素和样式面板

ios - 如何快速过滤字典并将结果输出到 CollectionViewController

ios - 检查 ios 是否有可用的互联网

ios - swift 3 : How do you save a high score programmatically?

ios - 使用 swift 检查 Firebase 中的用户类型

ios - 使用我们的 Apple 帐户分发其他团队存档的应用程序

ios - 带有通用 NSFetchRequest 的通用 NSFetchedResultsController 导致错误

swift - 在iOS上启动Web套接字服务器(使用Starscream?)

ios - Realm 迁移中的访问列表属性

ios - 合并和 NotificationCenter : Notifications not working