2015-01-01 2 views
0

Я пытаюсь инициализировать подкласс UIGestureRecognizer как свойство класса ViewController, но я не уверен, что поставить в качестве цели распознавателя жестов.Поиск цели при инициализации gestureRecognizer

class ViewController: UIViewController { 

    // Not sure where this declaration should happen 
    var menuGesture: MenuGestureRecognizer = MenuGestureRecognizer(target: self(), action: Selector("menuGestureHandler:")) 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.view.addGestureRecognizer(menuGesture) 
    } 
} 

XCode предлагает self(), но затем я получаю ошибку:

Swift Compiler Error: Missing argument for parameter #1 in call` 

Мне кажется, что это не удается, потому что я пытаюсь объявить переменную в рамках класса. Если это так, где/как я должен объявить распознаватель жестов?

Я довольно хорошо разбираюсь в Objective-C, но в последнее время переключился на Swift, не так ли?

ответ

0

Просто объявить его в viewDidLoad:

class ViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let menuGesture = MenuGestureRecognizer(target: self, action: "menuGestureHandler:") 
     self.view.addGestureRecognizer(menuGesture) 
    } 
} 

Если вы хотите menuGesture быть собственностью ViewController, сделать его необязательным и назначить его в viewDidLoad:

class ViewController: UIViewController { 
    var menuGesture: MenuGestureRecognizer? 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     menuGesture = MenuGestureRecognizer(target: self, action: "menuGestureHandler:") 
     self.view.addGestureRecognizer(menuGesture!) 
    } 
} 
+0

ISN» t 'menuGesture' не является свойством класса' ViewController'? – dillondrenzek

+0

Да, это не свойство. Зачем это нужно? Если вам действительно нужно это свойство, сделайте его необязательным и назначьте его в 'viewDidLoad'. – vacawama

+0

Я думаю, вы правы, это не обязательно должно быть свойство. Спасибо за немного о дополнительном, хотя! Я все еще учусь :) – dillondrenzek