Ich versuche, eine if-Anweisung zu haben, mit der eine Schaltfläche ausgeblendet wird, wenn ein Label einen bestimmten Status anzeigt, und die angezeigt wird, wenn das Label etwas anderes sagt. Der Name des Etiketts lautet Status. Wenn "Closed"
Angezeigt wird, soll es ausgeblendet werden. Wenn "Open"
Angezeigt wird, wird es angezeigt.
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
}
}
}
Wie @LAmasse sagt, möchten Sie button.hidden = true
Verwenden. button.hidden
Wurde in Swift 3 in button.isHidden
Umbenannt
Der von Ihnen eingegebene Code ergibt keinen Sinn.
if self.Status.text == "Closed"
{
Purchase().enable = false
}
Was ist Kauf? Aus dem großgeschriebenen Namen scheint es eine Klasse zu sein. In diesem Fall erstellt der Ausdruck Purchase()
wahrscheinlich eine neue Instanz der Klasse Purchase
, was keinen Sinn ergibt. Warum tätigen Sie einen Funktionsaufruf? Wenn das ein neues Purchase
Objekt erzeugt, ist dieser Code sinnlos. (Sie würden ein neues Objekt in der Anweisung if
erstellen, das in der nächsten Zeile verworfen wird, da Sie keinen starken Verweis darauf haben.)
Sie möchten ein IBOutlet für Ihre Schaltfläche einrichten und im Interface Builder verbinden.
Die Deklaration könnte folgendermaßen aussehen:
Class MyViewController: UIViewController
{
@IBOutlet weak var theButton: UIButton!
//The rest of your view controller's code goes here
}
Wenn die Steckdose mit Ihrer Taste verbunden ist, sollte sich links von der Codezeile ein ausgefüllter Kreis befinden. Es sieht aus wie das:
Und dann könnte Ihr Code zum Ein-/Ausblenden der Schaltfläche so aussehen:
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
}
}
}
}
Mir ist nicht klar, warum Sie alle Ergebnisse Ihrer Abfrage durchlaufen und die Schaltfläche anzeigen, wenn der "StatusType" eines der Ergebnisse == "Closed" ist.
Schließlich bin ich nicht sehr vertraut mit Parsen. Wenn der Beendigungsblock für die findObjectsInBackgroundWithBlock-Methode im Hauptthread nicht aufgerufen wird, müssen Sie diesen Code ändern, damit die Benutzeroberfläche im Hauptthread aktualisiert wird.
Seitdem habe ich erfahren, dass Parse seine Beendigungshandler im Hauptthread ausführt, sodass Sie sich keine Gedanken über Benutzeroberflächenaufrufe von Parse-Beendigungshandlern machen müssen.
Swift
Ich habe ein IBOutlet erstellt: loadingBDLogo
zu zeigen:
loadingBDLogo.isHidden = false
zum Ausblenden:
self.loadingBDLogo.isHidden = true
Der Beispielcode zum Ausblenden einer Schaltfläche in 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
}
}
nd
Sie müssen den UIButton zu einer Eigenschaft der Klasse machen, wenn Sie einen Verweis darauf behalten möchten. Dann können Sie mit self.takePhotoButton darauf zugreifen.