2016-07-31 55 views
0

Ich habe Code für eine Warnung geschrieben zu erscheinen, wenn die Eingabe in einem meiner UITextFields ist weniger als 1050. Es erscheint erfolgreich, wenn die Eingaben das erfüllt, aber nachdem ich "OK" drücken erscheint sofort wieder.UIAlertController bleibt wieder nach dem Schließen

Unten finden Sie den Code in der viewDidLoad Funktion:

override func viewDidLoad(){ 
    super.viewDidLoad() 
    alert = UIAlertController(title: "Error", message: "Please enter an exit width value greater than 1050", preferredStyle: UIAlertControllerStyle.Alert) 
    let okay = UIAlertAction(title: "OK", style: UIAlertActionStyle.Destructive, handler: valueCalc) 
    alert.addAction(okay) 
} 

Dann habe ich in meiner valueCalc Funktion (die, wenn sie aufgerufen wird, eine Taste abgegriffen wird):

@IBAction func valueCalc(sender: AnyObject){ 
    if(Int(mmText.text!)! < 1050){ //mmText is an UITextField 
     self.presentViewController(alert, animated: true, completion: nil) 
    } 
} 

Antwort

4

nach Ihren Codezeile

let okay = UIAlertAction(title: "OK", style: UIAlertActionStyle.Destructive, handler: valueCalc) 

Der Handler Name valueCalc aufgerufen wird, wenn Sie OK drücken.

Wieder wird der Wert berechnet, der weniger sein, wenn kommen dann die angegebenen Zeichen Sie die Warnung zeigt zurück.

Statt dessen ersetzen Sie diese Zeile im Code -

let okay = UIAlertAction(title: "OK", style: UIAlertActionStyle.Destructive, handler: handlerMethod) 

und fügen Sie diese Methode, um Ihren Code

func handlerMethod() { 

    //handle your action here after ok is pressed for e.g if you wanna just dismiss the alert then write 

    dismissViewControllerAnimated(true, completion: nil) 

} 
1

Sie haben die handler Argument für Ihre UIAlertAction auf valueCalc festgelegt. Deshalb, wenn der Benutzer tippt auf „OK“, wobei das Verfahren valueCalc erneut ausgeführt wird, und da der Wert (vermutlich) immer noch das gleiche ist, wird der Alarm direkt wieder präsentiert.

0

Versuchen Sie, diese

override func viewDidLoad(){ 
    super.viewDidLoad() 
    alert = UIAlertController(title: "Error", message: "Please enter an exit width value greater than 1050", preferredStyle:  UIAlertControllerStyle.Alert) 

    let okay = UIAlertAction(
     title: "OK", 
     style: UIAlertActionStyle.Destructive) { (action) in } 

    } 

    @IBAction func valueCalc(sender: AnyObject){ 
    if(Int(mmText.text!)! < 1050){ //mmText is an UITextField 
    self.presentViewController(alert, animated: true, completion: nil) 
    }