2017-09-09 2 views
1

Je suis en train de transmettre des données d'un contrôleur de vue à l'autre en utilisant cette méthode:Pourquoi le membre d'instance '___' ne peut-il pas être utilisé sur le type '___' dans prepareForSegue?

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 

     if segue.identifier == "toSecondViewController" { 
      let secondViewController = segue.destination as! SecondViewController 

      SecondViewController.username = "Austin" 
     } 

    } 

Cependant, je reçois l'erreur

membre instance « nom d'utilisateur » ne peut pas être utilisé sur le type 'SecondViewController'

la username variable a été définie dans SecondViewController et Segue est en effet nommé toSecondViewController. Qu'est-ce qui pourrait causer cette erreur?

Répondre

1

Cela m'arrive tout le temps.

if segue.identifier == "toSecondViewController" { 
      let secondViewController = segue.destination as! SecondViewController 

      SecondViewController.username = "Austin" 
     } 

Remarquez comment SecondViewController.username = "Austin" a un capital S .. il devrait être en minuscule.

Vous déclarez une variable let secondViewController as! SecondViewController mais vous essayez de définir .userName sur SecondViewController, S majuscule

Vous devez définir .userName sur la secondViewController variable. Minuscules s, ce qui est ce que vous vouliez.

+0

Martin .. le segue se passe maintenant sans aucune erreur, mais il ne semble pas que les données soient transmises à SecondViewController. Y a-t-il un moyen facile de le tester? –

+0

Dans secondViewController, montrez-moi comment vous déclarez le nom d'utilisateur. var username = Qu'avez-vous déclaré ici? Vous avez peut-être déclaré let, ce qui signifie que vous ne pouvez pas le modifier. –

+0

Dans SecondViewController j'ai déclaré var username = "" –