Passer des données à travers de multiples contrôleurs de vue avec Segue [Xcode Swift 3.0]
NOTE: Question a été modifié dans le but d'être plus clair avec ma question. Hé, j'essaie de transmettre des données à travers plusieurs VCS. Je veux passer des données (tableaux) à partir de V2 -> V3 puis de V3 -> V1 mais je ne veux pouvoir naviguer que dans les VC en tant que tels: V1 - V2 - V3 et V3 - V2 - V1. Donc, ce que j'ai besoin d'apprendre est de savoir comment passer des données sans naviguer vers un VC différent et de configurer deux méthodes de préparation de données pour passer des données entre V2 -> V3 et V3 -> V1 tout en naviguant entre tous les VCs. Quand je crée mon premier prepareetosegue, je suis incapable d'utiliser d'autres segments associés dans mon VC pour naviguer vers d'autres VCs sans avoir une erreur fatale. Quelqu'un peut-il m'aider? Toute contribution serait grandement appréciée!
Heres ma tentative:
import UIKit
class ViewController: UIViewController {
var name = String()
var StopButInfo = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
import UIKit
class SecondViewController: UIViewController {
var StringArray = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBOutlet var PHeight: UITextField!
@IBOutlet var PName: UITextField!
@IBAction func Search(_ sender: Any) {
if PHeight.text != ""{
performSegue(withIdentifier: "SearchSegue", sender: self)}
let CDstart = String(describing: Date())
StringArray.append(CDstart)
StringArray.append(PName.text!)
StringArray.append(PHeight.text!)
}
override func prepare(for SearchSegue: UIStoryboardSegue, sender: Any?){
let thirdController = SearchSegue.destination as! ThirdViewController
thirdController.SearchButInfo = StringArray
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
import UIKit
class ThirdViewController: UIViewController {
var height = String()
var SearchButInfo = [String]()
var StringArray = [String]()
@IBAction func Stop(_ sender: Any) {
if StringArray.count != 0{
performSegue(withIdentifier: "SegueToStart", sender: self)
}
let CDStop = String(describing: Date())
StringArray.append(CDStop)
StringArray.append(height)
}
override func prepare(for SegueToStart: UIStoryboardSegue, sender: Any?){
let firstController = SegueToStart.destination as! ViewController
firstController.StopButInfo = StringArray}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Quelle erreur obtenez-vous et sur quelle ligne de code? Pouvez-vous poster la ligne de code qui casse s'il vous plaît? Et aussi le message d'erreur –
Thread 1: signal SIGABRT en ligne 'let secondController = segueMVH.destination as! ThirdViewController' avec le message d'erreur "Impossible de convertir la valeur de type 'HC.ViewController' (0x107b33ec0) en 'HC.ThirdViewController' (0x107b33f48)." –