Cómo ocultar / mostrar un button en swift

Estoy intentando tener una instrucción if que hará que un button se oculte cuando una label muestre un cierto estado y aparecerá cuando la label diga algo más. El nombre de la label es Estado, y cuando muestra "Closed" , lo quiero oculto, y cuando aparezca "Open" , aparecerá.

 var query3 = PFQuery(className:"Status_of_game") query3.findObjectsInBackgroundWithBlock{ (namelist3: [AnyObject]!, error : NSError!) -> Void in for list3 in namelist3 { var output = list3["StatusType"] as String self.Status.text = output println(output) if self.Status.text == "Closed" { Purchase().enable = false } } } 

Como dice @LAmasse, quiere usar button.hidden = true . button.hidden se cambió el nombre a button.isHidden en Swift 3

El código que publicaste no tiene sentido.

 if self.Status.text == "Closed" { Purchase().enable = false } 

¿Qué es la compra? Del nombre en mayúscula, parece ser una class. Si es así, es probable que la expresión Purchase() cree una nueva instancia de la class Purchase , que no tiene sentido. ¿Por qué estás haciendo una llamada de function? Si eso está creando un nuevo object de Purchase , ese código no tiene sentido. (Se crearía un nuevo object dentro de la instrucción if que se descartaría en la siguiente línea, ya que no se guarda una fuerte reference a ella).

Desea configurar un IBOutlet para su button y conectarlo en Interface Builder.

La statement podría verse así:

 Class MyViewController: UIViewController { @IBOutlet weak var theButton: UIButton! //The rest of your view controller's code goes here } 

Si la salida está conectada a su button, debe haber un círculo relleno a la izquierda de la línea de código. Se parece a esto:

introduzca la descripción de la imagen aquí

Y entonces su código para mostrar / ocultar el button podría verse así:

 func showQueryResults { var query3 = PFQuery(className:"Status_of_game") query3.findObjectsInBackgroundWithBlock() { (namelist3: [AnyObject]!, error : NSError!) -> Void in for list3 in namelist3 { var output = list3["StatusType"] as String self.Status.text = output println(output) if output == "Closed" { theButton.isHidden = false //changed to isHidden for Swift 3 } } } } 

No me queda claro por qué bucea todos los resultados de su consulta y muestra el button si el "StatusType" de cualquiera de los resultados es == "Cerrado".

Finalmente, no estoy muy familiarizado con el análisis. Si el bloque de finalización para el método findObjectsInBackgroundWithBlock no se invoca en el subprocess principal, tendrá que cambiar ese código para que las actualizaciones de la interfaz de usuario en el subprocess principal.

EDITAR:

Desde entonces, he aprendido que Parse ejecuta sus controlleres de finalización en el hilo principal, por lo que no necesita preocuparse por las llamadas de UI desde los controlleres de finalización de Parse.

SHIWFT 3

Creé un IBOutlet: loadingBDLogo

Mostrar:

loadingBDLogo.isHidden = false

Esconder:

self.loadingBDLogo.isHidden = true

El código de muestra para ocultar un button en Swift:

 import UIKit class ViewController: UIViewController { // Create outlet for both the button @IBOutlet weak var button1: UIButton! @IBOutlet weak var button2: UIButton! override func viewDidLoad() { super.viewDidLoad() //Set button2 hidden at start button2.hidden = true } //Here is the action when you press button1 which is visible @IBAction func button1(sender: AnyObject) { //Make button2 Visible button2.hidden = false } } 

Y

Tienes que convertir el UIButton en una propiedad de la class si quieres mantener una reference a ella. Luego puede acceder a él usando self.takePhotoButton.