2016-07-23 6 views
0

Ich habe eine Schaltfläche zum Speichern von Bildern, die verwendet wird, um ein Bild in der Fotobibliothek zu speichern, nachdem ein neues Bild erstellt wurde oder ein vorhandenes Foto in die App importiert und geändert wurde.Wie kann ich verhindern, dass die ios-Taste funktioniert, bis eine bestimmte Bedingung erfüllt ist?

Wenn jedoch die Schaltfläche "Bild speichern" gedrückt wird, ohne dass ein Bild aufgenommen oder in die App geladen wurde, bleibt es hängen und reagiert nicht mehr, weil es kein Bild speichern kann.

Irgendwelche Ratschläge, was ich brauche, um die Funktion der Taste zu stoppen, bis ein Bild geladen ist?

//Save Image Button Function 
@IBAction func saveImage(_ sender: AnyObject) { 
    let imageData = UIImageJPEGRepresentation(photoViewer.image!, 1.0) 
    let compressedJPGImage = UIImage(data: imageData!) 
    UIImageWriteToSavedPhotosAlbum(compressedJPGImage!, nil, nil, nil) 
    let alert = UIAlertView(title: "Saved!", 
          message: "Your image has been saved to Photo Library!", 
          delegate: nil, 
          cancelButtonTitle: "Ok") 
    alert.show() 
+0

Dieser Beitrag kann die Antwort haben: http://stackoverflow.com/questions/25524638/disable-a-button-on-swift Wenn Sie einen Code schreiben wir können Ihnen wahrscheinlich eine spezifischere Lösung geben. – Nicko

+0

Hallo Nicko danke für die Antwort. Ich möchte den Button nicht wirklich deaktivieren, da er später benötigt wird. Dies ist der Code, den ich für diese spezielle Taste haben: // Bild speichern Taste Funktion @IBAction func Saveimage (_ Absender: ANYOBJECT) { lassen imagedata = UIImageJPEGRepresentation (photoViewer.image !, 1.0) lassen compressedJPGImage = UIImage (Daten: imageData!) UIImageWriteToSavedPhotosAlbum (compressedJPGImage !, null, nil, nil) let alert = UIAlertView (Titel: "Gespeichert!", Nachricht: "Ihr Bild wurde in Photo Library gespeichert!", delegate: nil, cancelButtonTitle: "Ok") alert.show() – DSpooner

+0

Hallo DSpooner, das ist in Ordnung, die Taste kann jederzeit wieder aktiviert werden, indem die Eigenschaft wieder auf 'true' gesetzt wird. Überprüfen Sie die Antwort von @MShahmeer unten, sie haben darauf hingewiesen, wo es auf 'false' initialisiert werden soll und wo es wieder auf' true' gesetzt werden soll. – Nicko

Antwort

0

Zuerst in viewDidLoad, deaktivieren Sie die Schaltfläche durch Druck:

button.enabled = false 

Dann eine bedingte if-Anweisung, wo geprüft wird, ob ein Bild in die App geladen ist. Ist dies der Fall, erneut die Taste aktivieren, indem Sie:

button.enabled = true 
+0

Vielen Dank @Nicko und @ MShahmeer, das funktioniert für swift 2.2 aber für swift 3 hat sich das leicht geändert button.isEnabled = false ' – DSpooner

+0

Ah ja, das ist richtig. Entschuldigung für die Aufsicht! – MShahmeer

Verwandte Themen