2016-08-03 1 views
2

J'ai un UITableView qui charge des données à partir d'un fichier de base de données. Il a différentes sections. J'ai réussi à concevoir un programme personnalisé UITableViewCell. Quand je touche une cellule, je consulte un UIViewController. La séquence est ajoutée à partir de l'interface Builder. Maintenant, j'ai besoin de charger différents contenus (c'est-à-dire UILabel, UIButton) dans le nouveau UIViewController basé sur le numéro de section du UITableView. Pour plus de visualisation, j'ajoute des images ci-dessous.Comment charger différents UIViews basés sur des données différentes après la connexion à un UITableView?

Comment accomplir ceci? Devrais-je utiliser la sous-classe UIViewController personnalisée pour chaque action? Ou y a-t-il un moyen plus facile de le faire?

1er vue view 1 2ème vue view 2 3ème vue view 3

+0

Voulez-vous dire que vous voulez passer à un UIViewController? –

+0

Oui, je consulte un 'UIViewController' @ NiñoScript – nayem

+0

J'ai édité votre question pour refléter cela. ;) –

Répondre

2

Dans le code, vous pouvez utiliser la méthode prepareForSegue, vérifier l'identifiant, et passer la prochaine UIViewController les données pertinentes .

Si l'interface est différente pour chaque type de cellule, vous devez utiliser UIViewController s différents pour chaque type d'interface. Tout cela peut être fait à travers le storyboard, en "ctrl-glisser" de chaque cellule prototype à un contrôleur différent.


Si vous ne souhaitez pas utiliser différentes cellules prototypes pour des données différentes. (Ce qui rendrait cela très facile à faire avec le Storyboard), puis au lieu de parcourir le storyboard, appelez le segue via le code dans la méthode didSelectRowAtIndexPath de votre UITableView delegate. Comme ceci:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    switch indexPath.section { 
    case 0: 
     performSegueWithIdentifier("some_segue_id", sender: self) 
    case 1: 
     performSegueWithIdentifier("another_segue_id", sender: self) 
    default: 
     print("not a known section") 
    } 
} 
+0

Mais le problème est que je n'utilise qu'une seule cellule réutilisable. Les contenus sont différents car je les récupère d'une base de données. Et je veux passer à un 'UIView' ou' UIViewController' selon le numéro de section de la cellule sélectionnée – nayem

+0

Vous pourriez facilement utiliser des cellules plus réutilisables, ce qui rendrait également plus facile de changer l'interface de chaque type de données si jamais vous vouloir. Mais si vous ne voulez pas, j'ai ajouté un exemple de code à ma réponse ci-dessus. –

+0

OK. Mais comment ajouter plus de segues? J'ai ajouté une section de 'UITableViewCell 'à' UIViewController' en faisant glisser le contrôle dans le storyboard et en lui donnant un identifiant. Mais je ne suis pas capable d'ajouter plus de segues d'une cellule à une autre scène 'UIViewController'. – nayem