2017-06-14 1 views
0

Désolé si ce problème particulier a été posé sur, j'ai suivi les réponses sur d'autres threads mais aucun d'entre eux ne semblait fonctionner, mais j'ai juste commencé à apprendre Swift alors tout cela est assez nouveau pour moi. Donc, j'ai un champ de texte dans deux contrôleurs View et je veux que le troisième View Control affiche un résultat basé sur l'entrée des deux autres contrôleurs quand j'appuie sur un bouton.Passer des données entre les contrôleurs de vue dans les contrôleurs de vue de page dans Swift

J'ai suivi this tutorial et placé les champs de texte, étiquette et bouton comme je l'ai déjà dit. J'ai placé mon code (que vous pouvez voir ci-dessous) dans ViewControl.swift. Le problème est que lorsque je tente de l'exécuter, j'obtiens une erreur "Thread 1: EXC_BAD_INSTRUCTION (code = EXC_I386_INVOP, subcode = 0x0)" dans les deux dernières lignes.

class ViewController: UIViewController { 

var a: String = "" 
var b: String = "" 

@IBOutlet weak var aTextField: UITextField! 
@IBOutlet weak var bTextField: UITextField! 
@IBOutlet weak var calculateButton: UIButton! 
@IBOutlet weak var resultLabel: UILabel! 

@IBAction func calculateButtonPressed(_ sender: UIButton) { 
    let a = aTextField.text!; 
    let b = bTextField.text!; 

Je pense que l'erreur est à partir des données ne passe pas entre les vues (car avant d'avoir tout dans la même vue et il a bien fonctionné), mais étant donné que je ne dispose que d'un fichier ViewController.swift Je ne pouvais » t comprendre comment utiliser un Segue.

Répondre

0

Ne déclarez pas les mêmes variables plusieurs fois. Supprimer let avant a & b. Vous avez déjà déclaré a & b globalement, puis essayé de redéclarer l'intérieur IBAction

class ViewController: UIViewController { 

var a: String = "" 
var b: String = "" 

@IBOutlet weak var aTextField: UITextField! 
@IBOutlet weak var bTextField: UITextField! 
@IBOutlet weak var calculateButton: UIButton! 
@IBOutlet weak var resultLabel: UILabel! 

@IBAction func calculateButtonPressed(_ sender: UIButton) { 
    a = aTextField.text!; 
    b = bTextField.text!; 
+0

je l'ai enlevé laisse mais il donne toujours la même erreur, si elle aide la console indique « erreur fatale: trouvé de façon inattendue nil lors du déballage d'une valeur optionnelle (lldb) " –

+0

avez-vous connecté le' IBOutlet' à 'aTextField' &' bTexfield' du storyboard? – Bali

+0

Oui! Ils sont tous deux connectés à ViewController.swift –

0
  1. Assurez-vous que vos points de contrôle sont setted correctement.
  2. Dans vos deux variables a & b sont re-declared.Just mettre à jour votre code comme ci-dessous
@IBAction func calculateButtonPressed(_ sender: UIButton) { 
    self.a = aTextField.text! 
    self.b = bTextField.text! 
} 
+0

Je l'ai mis à jour comme vous l'avez dit, mais il donne toujours la même erreur et se bloque. Si cela aide à diagnostiquer le problème, la console dit "erreur fatale: trouvé de manière inattendue nil lors du déballage d'une valeur optionnelle (lldb)". J'ai déjà triplé les points de vente et ils semblent tous fonctionner correctement. Si j'ai tous les champs de texte dans le même View Controller que le bouton, l'application fonctionne parfaitement, mais si je les déplace, je reçois cette erreur. –