2017-09-15 3 views
0

Hallo, ich versuche eine Variable mit der Level Nummer zurück zu geben. Nachdem der Benutzer löscht unterhalb der rundenSende eine Integer zurück zum vorherigen View Controller

genannt wird
 if enemyHP <= 0.0{ 
      level = level + 1     
      battle(winPlayer:true) 
     } 

dann Funktion Schlacht genannt

 let alert = UIAlertController(title: "finished!", message: finishedMessage, preferredStyle: UIAlertControllerStyle.alert) 
     alert.addAction(UIAlertAction(title:"Go Back",style:.default,handler:{action in 


     self.dismiss(animated: true, completion: nil)})) 
     self.present(alert,animated: true,completion: nil) 
    } 

Ich versuche, die Level-Nummer in dem vorherigen View-Controller angezeigt werden, damit ich die Variable Ebene gehen müssen sein ging zurück. Was ist der beste Weg dafür? Ich habe Segmente verwendet und es funktioniert nicht mit der Warnung.

Delegierter

protocol DataSentDelegate { 

    func Back(data: Int) 
} 

benutzte ich

delegate?.Back(data: level) 

Im vorigen Viewcontroller ich

hinzugefügt
func Back(data: Int){ 
    new = data 
} 


print(new) 

Es erscheint nicht.

+0

Ihr Code wird nicht funktionieren. Sie entlassen, dann präsentieren Sie ??? – Brandon

+0

@Brandon Hallo, es funktioniert. Es zeigt die Warnung und es bringt mich zurück. Ich habe Probleme beim Übergeben der Variablen – Satsuki

+2

Siehe https://stackoverflow.com/questions/5210535/passing-data-between-view-controllers – rmaddy

Antwort

0

Statt die entlassen präsente Methoden verwenden, sollten Sie eine segue verwenden und dann das Objekt in passieren vorbereiten (für: Absender :) auf diese Weise:

func prepare(for segue:UIStoryboardSegue, sender:Any?) 
{ 
    if segue.identifier == "Back" // Give it any name 
    { 
     if let destination = segue.destination as? MyViewController // NOTE: this is your custom view controller class 
     { 
      destination.level = yourDesiredValue 
     } 
    } 
} 

Update: zu Führen Sie den folgenden Schritt aus:

let alert = UIAlertController(title: "finished!", message: finishedMessage, preferredStyle: UIAlertControllerStyle.alert) 
alert.addAction(UIAlertAction(title:"Go Back",style:.default,handler:{action in 
    self.performSegue(withIdentifier: "Back", sender: nil) 
} 
self.present(alert,animated: true,completion: nil) 
+0

Hallo Vielen Dank für Ihre Antwort, ich weiß über die Übergänge, aber wird dies mit der Warnung arbeiten? – Satsuki

+0

@Satsuki Ich bin mir nicht sicher, was Sie zu tun versuchen, und ich verstehe nicht, warum Sie versuchen, die Warnung innerhalb des Callbacks der gleichen Warnung anzuzeigen. Ich nehme an, dass Sie die Warnung außerhalb des Abschlussblocks anzeigen möchten und dass Sie den Übergang ausführen möchten, wenn der Benutzer die Aktion "Zurück" der Warnung drückt. Ich habe die Antwort bearbeitet, ich hoffe, es hilft. –

+0

Danke !!! Das hat es getan. Ich muss mehr über Übergänge erfahren. – Satsuki

Verwandte Themen