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
}
}
}
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:
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.
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.
Swift
J'ai créé un IBOutlet: loadingBDLogo
pour montrer:
loadingBDLogo.isHidden = false
To Hide:
self.loadingBDLogo.isHidden = true
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.
Pour masquer un bouton, utilisez button.hidden = true https://developer.Apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//Apple_ref/occ/cl/UIView