2016-06-22 1 views
1

J'ai une vue de table avec une liste d'événements. J'essaye maintenant de créer une vue dynamique qui peut montrer des détails au sujet de tous ces événements basés sur l'événement tapé sur. Deux questions que j'ai sont comment créer un segment générique que je peux utiliser pour une cellule de tableau pour aller à la même vue, et puis dans cette vue comment puis-je accéder à la cellule qui a amené l'utilisateur à la vue?Affichage dynamique rapide basé sur la cellule sélectionnée dans la vue de tableau précédente

Répondre

2

Vous utiliseriez didSelectRowAtIndexPath. Tout d'abord, créez une variable eventToPass de type Event (ou quelle que soit votre classe) sur votre ViewController. Ensuite, vous devriez obtenir l'objet qui représente vos données, puis passez-le à votre nouveau UIViewController. Quelque chose comme:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    let event = eventsArray[indexPath.row] 
    self.eventToPass = event 

    self.performSegueWithIdentifier("EventSegue", sender: self) 
} 

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "EventSegue") { 
    var detailVC = segue.destinationViewController as EventDetailViewController 
     detailVC.event = eventToPass 
    } 
} 

Cela suppose que vous avez un ViewController appelé EventDetailViewController qui a une propriété appelée event. De là, vous pouvez accéder à l'un des détails event sur votre nouveau ViewController.

+0

puis sur la nouvelle vue comment accéder à l'événement? est-ce là où vous définissez detailVC.event afin que la variable soit accessible en tant que 'event'? –

+0

@MichaelStClair Oui, je viens d'éditer ma réponse pour la rendre plus claire. J'ai également supposé que le segue est appelé 'EventSegue' – Daven

+0

Désolé, une dernière chose, comment puis-je ajouter la propriété de l'événement au nouveau contrôleur de vue? –