2017-06-07 3 views
1

Ich versuche einen einfachen schnellen linken Übergang zum nächsten View-Controller zu erstellen, erhalte jedoch einen nicht erkannten Selektorfehler. Dies ist der Code versagt:Unbekannter Selektorfehler beim Wischen nach links Geste swift

override func viewDidLoad() { 
     super.viewDidLoad() 

     //below creates the instances for swiping to change screens 
     //only added right here because it's the main screen 

      var swipeLeft : UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("swipe:")) 
     swipeLeft.direction = UISwipeGestureRecognizerDirection.Left 

     self.view.addGestureRecognizer(swipeLeft) 

     func swipe(Sender: UISwipeGestureRecognizer!) { 
      print("swiped left") 
      let vc = self.storyboard!.instantiateViewControllerWithIdentifier("OnDeck") as! OnDeck 
      self.presentViewController(vc, animated: true, completion: nil) 
     } 
} 

Dies ist der Fehler Ich erhalte:

2017-06-07 19:07:00.990 Test[65722:3911717] -[Test.GameView swipe:]: unrecognized selector sent to instance 0x7fc2d310f700 
2017-06-07 19:07:01.000 Test[65722:3911717] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Test.GameView swipe:]: unrecognized selector sent to instance 0x7fc2d310f700' 
+0

Ihre Swipe-Funktion muss auf der obersten Ebene der Klasse sein (ein Geschwister von "viewDidLoad"). Es kann nicht innerhalb von 'viewDidLoad' verschachtelt werden. – vacawama

+1

danke, habe es gerade herausgebracht und es funktioniert jetzt perfekt! – dgelinas21

Antwort

0

In Ihrem Fall für Swift 3 der Wähler sollte wie folgt aussehen:

#selector(swipe(Sender:)) 

Sie kann die #selector-Notation verwenden, um Kompilierungszeitprüfungen zu erhalten.

Für Swift 2 der Wähler wäre:

#selector(swipe(_:)) 
0

Sie müssen es so versuchen:

let swiftLeft : UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(self.swipe(Sender:))) 
swiftLeft.direction = .left 
self.view.addGestureRecognizer(swiftLeft) 

func swipe(Sender: UISwipeGestureRecognizer!) { 
    print("swiped left") 

} 

Wenn Sie auf Swift arbeiten 2, müssen Sie den Selektor hinzufügen wie das

selector (self.swipe (_ :))

+0

Das gibt mir einen Fehler: 'Die Klasse hat kein Mitglied swipe (Absender:)' – dgelinas21

+0

hast du meinen ganzen Code kopiert? –

+0

ja, für welche version swift ist das? – dgelinas21

Verwandte Themen