2017-03-14 1 views
0

Je souhaite transmettre des propriétés à un contrôleur de vue créé à partir d'une vue de conteneur dans un storyboard. Le problème est que je ne sais pas comment je pourrais le faire. Le rectangle bleu est la zone où j'ai deux conteneurs vue, chacun se référant à un contrôleur de vue (l'un est le contrôleur de table personnalisé en haut et je suis intéressé par et l'autre au contrôleur de vue ci-dessous) .Xcode - Passer la propriété pour afficher le contrôleur dans le storyboard

Le problème est que mon contrôleur de table personnalisé a besoin de certaines propriétés. Je voudrais passer les propriétés de la classe où j'instancie le Storyboard (le storyboard est appelé à partir d'une classe toher). Le contrôleur de vue contenant les vues de conteneurs est instancié comme indiqué ci-dessous:

enter image description here

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Phenotype" bundle:nil]; 
     GeneralViewController *vc = [sb instantiateViewControllerWithIdentifier:@"phenotype"]; 
     [vc setProperty:property]; // I would like to pass this property to the custom table view controller. 
     [self.navigationController pushViewController:vc animated:YES]; 

J'essaie d'obtenir le contrôleur de vue de la table de la classe où j'instancier le stroyboard pour définir la propriété à ce moment

TableViewController *tablevc = [sb instantiateViewControllerWithIdentifier:@"table"]; 
    [tablevc setProperty:property]; 

... mais sans succès.

Est-ce que n'importe qui aurait une idée comment je peux accéder à la propriété du contrôleur de vue de table directement depuis le contrôleur de vue qui instancie le storyboard?

Merci pour votre aide,

Répondre

3

Choisissez votre Embed rectangle bleu de Segue à l'tableView sur le dessus et lui donner un identifiant de Segue :) permet de dire que l'identificateur de Segue est « ABCD ».

Dans votre récipient ayant de ViewController écrire

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "abcd" { 
      let tableView : YourTableViewClass = segue.destination as! YourTableViewClass 
      //pass whatever params want :) 
     } 
    } 

EDIT

enchaînements embarqués se comporte comme les autres enchaînements à une exception près que d'autres vous enchaîne devrez les exécuter soit par programme ou le déclenchement d'un événement où comme le segue intégré est exécuté automatiquement quand un conteneur se charge :)

Pour que vous puissiez avoir un identifiant de segment, écrivez le code dans prepareForSegue jus t comme vous le faites pour d'autres segues :)

+0

Merci beaucoup! Tu as fait ma journée :-). Je n'ai jamais été un grand fan de storyboards et je n'ai jamais vraiment compris ces choses dans les détails. THX!! – Trichophyton

+0

Suis heureux que ma réponse était d'une certaine utilité pour vous :) codage heureux –