web-dev-qa-db-fra.com

comment masquer / afficher un bouton dans swift

J'essaie d'avoir une instruction if qui fera en sorte qu'un bouton soit masqué lorsqu'une étiquette affiche un certain statut et apparaît lorsque l'étiquette dit autre chose. Le nom de l’étiquette est Status, et quand il affiche "Closed", Je le veux caché, et quand il montre "Open", il apparaîtra.

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
        }
    }
}
24
Tom F

Comme @LAmasse le dit, vous voulez utiliser button.hidden = true. button.hidden A été renommé en button.isHidden Dans Swift 3

Le code que vous avez posté n'a pas de sens.

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

Qu'est-ce que l'achat? Du nom en majuscule, cela semble être une classe. Si tel est le cas, l'expression Purchase() crée probablement une nouvelle instance de la classe Purchase, ce qui n'a aucun sens. Pourquoi faites-vous un appel de fonction? Si cela crée un nouvel objet Purchase, alors ce code est inutile. (Vous créeriez un nouvel objet à l'intérieur de l'instruction if qui serait ignoré à la ligne suivante, car vous n'y gardez pas de référence forte.)

Vous souhaitez configurer un IBOutlet pour votre bouton et le connecter dans Interface Builder.

La déclaration pourrait ressembler à ceci:

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

Si la prise est connectée à votre bouton, il devrait y avoir un cercle rempli à gauche de la ligne de code. Cela ressemble à ceci:

enter image description here

Et puis votre code pour afficher/masquer le bouton pourrait ressembler à ceci:

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
      }
    }
  }
}

Je ne vois pas pourquoi vous liriez tous les résultats de votre requête et afficheriez le bouton si le "StatusType" de l'un des résultats est == "Fermé".

Enfin, je ne suis pas très familier avec l'analyse. Si le bloc d'achèvement de la méthode findObjectsInBackgroundWithBlock n'est pas appelé sur le thread principal, vous devrez modifier ce code pour que les mises à jour de l'interface utilisateur soient effectuées sur le thread principal.

MODIFIER:

Depuis, j'ai appris que Parse exécute ses gestionnaires d'achèvement sur le thread principal. Vous n'avez donc pas à vous soucier des appels d'interface utilisateur des gestionnaires d'achèvement de Parse.

30
Duncan C

Swift

J'ai créé un IBOutlet: loadingBDLogo

pour montrer:

loadingBDLogo.isHidden = false

To Hide:

self.loadingBDLogo.isHidden = true

19
BCHOKZ

Le code exemple pour cacher un bouton dans 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.isHidden = true
}



//Here is the action when you press button1 which is visible
@IBAction func button1(sender: AnyObject) {
    //Make button2 Visible
    button2.isHidden = false
    }

}

Et

Vous devez faire de l'UIButton une propriété de la classe si vous souhaitez conserver une référence à celle-ci. Ensuite, vous pouvez y accéder en utilisant self.takePhotoButton.

7
Vijay yadav
6
La masse