Transmettre des données à travers des enchaînements
Je suis en train de faire simple application iOS avec tableview contrôleur et la fenêtre detravail. Tout ce que je veux, c'est de transmettre des données par des enchaînements.
c'est à quoi il ressemble.
Tout ce que je veux, c'est que u cliquez sur "Markíza" il va ouvrir l'URL de la vidéo numéro 1, et si u cliquez sur "TV JOJ" il va ouvrir l'URL de la vidéo numéro 2 dans le lecteur.
Mon tableview cellules:
struct Program {
let category : String
let name : String
}
var programy = [Program]()
self.programy = [Program(category: "Slovenské", name: "Markíza"),
Program(category: "Slovenské", name: "TV JOJ")]
- double possible de Passer des variables d'une ViewController à l'autre dans Swift
Vous devez vous connecter pour publier un commentaire.
Swift fonctionne exactement de la même manière que l'Obj-C, mais est retravaillé dans la nouvelle langue. Je n'ai pas beaucoup d'informations à partir de votre poste de travail, mais nous allons donner un nom à chaque TableViewController pour aider avec mon explication.
HomeTableViewController (c'est la capture d'écran, vous avez ci-dessus)
PlayerTableViewController (c'est le joueur de l'écran où vous souhaitez vous rendre)
Avec qui a déclaré, dans PlayerTableViewController vous avez besoin d'avoir une variable qui va stocker les données passées. Juste en dessous de votre déclaration de classe ont quelque chose comme ceci (si vous avez l'intention de stocker la structure comme un seul objet plutôt que de le tableau:
Après qu'il y a deux façons que vous pouvez envoyer des données vers le nouveau TableViewController.
1) à l'Aide de prepareForSegue
Au bas de HomeTableViewController vous utilisez la prepareForSegue méthodes pour transmettre les données. Voici un exemple de code que vous allez utiliser:
Une fois PlayerTableViewController a chargé la variable sera déjà et utilisable
2) à l'Aide de didSelectRowAtIndexPath
Si spécifique de données doit être envoyé sur la base de laquelle la cellule est sélectionnée, vous pouvez utiliser didSelectRowAtIndexPath. Pour que cela fonctionne, vous devez donner à votre enchaîner un nom dans la vue storyboard (laissez-moi savoir si vous avez besoin de savoir comment le faire trop).
Laissez-moi savoir si vous avez besoin d'autres info sur ce
performSegueWithIdentifier
fonctionne très bien, mais alors, aucune donnée n'est transférée à la nouvelle vue. :[indexPathForSelectedRow
au lieu dedidSelectRowAtIndexPath
de rappel? Exemple:destinationVC.programVar = products[self.tableView.indexPathForSelectedRow!.row]
dans leprepareForSegue
méthode. Laissez-moi savoir si je me trompe (je suis nouvelle dans les trucs trop).Avec Swift 3 & 4
Dans La Première ViewController (Envoi De La Valeur)
Dans la deuxième viewController (Capture de La Valeur)
Si vous n'avez pas besoin de discerner l'action de l'identifiant, mais seulement par la classe cible...