Bonjour.
Pour un stage, je dois ouvrir une tableView en fonction des données d'une autre.
J'a trouvé comment envoyer des données simples d'un ViewController à un autre et à afficher le résultat dans un label.
J'ai ensuite essayé de voir si je peux remplir un tableau de caractéristiques pour ces héros en fonction de la valeur choisie dans la TableView du premier controller avec des conditions if.
C'est là que je bloque.
Le code marche bien avec le label, mais quand j'essaie de l'enlever, mon deuxième controller ne récupère plus les données du row choisie dans ma tableView.
Le label n'a pourtant rien à voir avec la récupération des données, non ?

çà fait plusieurs jours que je suis sur cette tâche et là, je sèche.

Si quelqu'un peut m'aider. Merci d'avance.

Voici le code pour mes ViewControllers :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
 
import UIKit
 
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
 
    @IBOutlet weak var tableView: UITableView!
 
    var avengers = ["Thor", "Hulk", "Iron Man", "Capt. America", "Black Widow"]
 
    override func viewDidLoad() {
 
        super.viewDidLoad()
 
        tableView.delegate = self
        tableView.dataSource = self
 
    }
 
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
 
        return avengers.count
 
    }
 
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
 
        let cell = UITableViewCell()
        print(indexPath.row)
        cell.textLabel?.text = avengers[indexPath.row]
 
        return cell
 
    }
 
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
 
        performSegue(withIdentifier: "oneSegue", sender: avengers[indexPath.row])
 
    }
 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
 
        let guest = segue.destination as! SecondViewController
        guest.hero = sender as! String
 
    }
 
    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
 
        if editingStyle == UITableViewCellEditingStyle.delete {
 
            avengers.remove(at:indexPath.row)
            tableView.deleteRows(at:[indexPath], with: .fade)
 
        }
 
    }
 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
 
import UIKit
 
class SecondViewController: UIViewController {
 
    //@IBOutlet weak var textLabel: UILabel!
    var hero = "superman"
    //var getAvengersCarac = ["un", "deux", "trois", "quatre", "cinq"]
 
    override func viewDidLoad() {
        super.viewDidLoad()
        print(hero)
        //textLabel.text = hero
 
        if(hero == "Thor") {
 
            //getAvengersCarac[0] = "gris"
            //getAvengersCarac[1] = "marteau"
 
        }
        else if(hero == "Hulk") {
 
            //getAvengersCarac[0] = "vert"
            //getAvengersCarac[1] = "super force"
 
        }
        else if(hero == "Iron Man") {
 
            //getAvengersCarac[0] = "rouge"
            //getAvengersCarac[1] = "armure de combat"
 
        }
        else if(hero == "Capt. America") {
 
            //getAvengersCarac[0] = "bleu"
            //getAvengersCarac[1] = "bouclier"
 
        }
        else if(hero == "Black Widow") {
 
            //getAvengersCarac[0] = "noir"
            //getAvengersCarac[1] = "agilité"
 
        }
 
    }
 
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
 
}