web-dev-qa-db-de.com

wie man eine Schaltfläche in swift

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

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:

enter image description here

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.

BEARBEITEN:

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.

30
Duncan C

Swift

Ich habe ein IBOutlet erstellt: loadingBDLogo

zu zeigen:

loadingBDLogo.isHidden = false

zum Ausblenden:

self.loadingBDLogo.isHidden = true

19
BCHOKZ

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.

7
Vijay yadav
6
La masse