web-dev-qa-db-fra.com

swift 3 prépare la fonction cassée?)

pour une raison étrange, avec Swift 3, le prepare(for segue: La méthode refuse de reconnaître l’identificateur de séquence. J'ai les IBAction suivants connectés à un couple de boutons sur l'interface utilisateur:

@IBAction func goToImagesPicker(_ sender: AnyObject) {
    performSegue(withIdentifier: "showImagePicker", sender: sender)

}

@IBAction func goToNamePicker(_ sender: AnyObject) {
    performSegue(withIdentifier: "showNamePicker", sender: sender)
}

Cependant dans mon prepare(for segue: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _::::::: Il est une console qui n'enregistre pas les messages que j'ai assignés à chacun d'eux

func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {

        if segue.identifier == "showImagePicker" {

            print("This is the Image Picker")

        }

        if segue.identifier == "showNamePicker"  {

            print("This is the Name Picker")

        } 
}

aucune suggestion? ou est-ce juste un bug?

23
John Durand

Votre méthode n'est pas appelée du tout parce que vous avez la mauvaise signature. Il a été changé dans Xcode 8 beta 6 en:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

Notez que le type de sender est Any? au lieu de AnyObject?. Après la mise à niveau de Xcode, vous auriez dû avoir une erreur qui vous indiquait que votre méthode ne remplaçait aucune méthode de sa super-classe qui aurait dû vous indiquer avant de supprimer le override.

57
dan