2016-09-11 2 views
0

J'écris actuellement une application dans Swift et j'ai mis en application toute mon interface utilisateur par programme. Je voudrais être épuisant, si récemment, j'ai décidé d'utiliser storyboard mais je suis coincé avec un bug.Passant la valeur sur la vue suivanteController

lors du passage sur la mainContext du AppDelegate au FirstViewController, la valeur de la mainContext est nil. En premier lieu, quand je l'ai écrit tout programme, mon code ressemblait à ceci:

 let vc = FirstViewController() 
     vc.mainContext = mainContext 
     window?.rootViewController = vc 

Mais maintenant que je travaille avec StoryBoard, ce n'est pas plus valable parce que je dois instancier la vue avec son ID, comme ceci:

  let storyboard = UIStoryboard(name: "Main", bundle: nil) 
      var vc = storyboard.instantiateViewControllerWithIdentifier("FirstView") as! FirstViewController 
      vc.mainContext = mainContext 

Mais dans ce cas, le contexte est nil. Si je n'instancier le VC comme ça, mes points de vente sont nil et je reçois cette erreur:

fatal error: unexpectedly found nil while unwrapping an Optional value 

Quelqu'un connait un moyen de passer mon mainContext?

Répondre

1

Vous n'êtes pas accéder au RootViewController, vous créez un nouveau contrôleur de vue et ne pas faire quoi que ce soit avec elle, pour accéder à la RootViewController remplacer cette

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
var vc = storyboard.instantiateViewControllerWithIdentifier("FirstView") as! FirstViewController 
vc.mainContext = mainContext 

avec

if let vc = self.window?.rootViewController as? FirstViewController { 
    vc.mainContext = mainContext 
}