2014-11-24 40 views
1

我得到试图执行滑动手势时,这个错误:视图控制器不符合协议AnyObject误差UISwipeGestureRecognizer

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

func slideToRightWithGestureRecognizer() { 

} 

我的视图控制器看起来是这样的:

class ViewController: UIViewController, UIGestureRecognizerDelegate { 

} 

我得到的错误target: self,我是否必须实施一些代表或者还有什么问题?

+0

将参数添加到“UISwipeGestureRecognizer”类型的“slideToRightWithGestureRecognizer”中。例如。 'func slideToRightWithGestureRecognizer(sender:UISwipeGestureRecognizer){' – 2014-11-24 12:37:30

+0

我也试过,但没有效果 – Kobe 2014-11-24 12:38:03

+0

你的错误信息是什么? – 2014-11-24 12:38:22

回答

1

我假定swipeGesture是一个属性 - 在这种情况下,问题是你财产的初始化,这是不允许的过程中参考self,因为直到所有属性都被初始化self不可用。

我认为解决这个问题的最好办法是在viewDidLoad方法的初始化属性,但当然,酒店是一个可选的 - 我认为它是安全的使用隐式展开一个在这种情况下:

var swipeGesture: UISwipeGestureRecognizer! 

override func viewDidLoad() { 
    super.viewDidLoad() 

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

这样做。谢谢 – Kobe 2014-11-24 12:44:05

+1

附注:这是一个无意义的编译错误消息的典型例子。有很多这样的... – Antonio 2014-11-24 12:58:23

相关问题