Wie ändere ich den Schaltflächentext in Swift Xcode 6?


122

Folgendes versuche ich zu tun. Wenn Sie jemals Halo oder CoD gespielt haben, wissen Sie, dass Sie den Namen einer Waffenladung ändern können.

Ich mache es so, dass Sie Ihren Load-Out-Namen mithilfe eines Textfelds ändern können. Hier ist das Problem: Der Name des Ladevorgangs im Menü "Ladevorgang" ist eine Schaltfläche (um Informationen zu diesem Ladevorgang auszuwählen und anzuzeigen), und ich könnte dies einfach schreiben:

@IBAction func renameClassButton(sender: AnyObject) {
    classTopButton.text = "\(classTopTextField)"
}

Außer es ist [classTopButton] eine Schaltfläche, die das Suffix '.text' nicht zulässt

Antworten:


320

Du kannst tun:

button.setTitle("my text here", forState: .normal)

Swift 3 und 4:

button.setTitle("my text here", for: .normal)

14
Oder etwas kürzer. Sie können einen UIControlStateTeil weglassen und einfach wie schreiben button.setTitle("my text here", forState: .Normal).
Mustafa

3
Ich denke, es hilft zu erwähnen: buttonist eine IBOutlet(im Gegensatz zu der, IBActiondie diese Codezeile enthält), wenn Sie Storyboard nutzen.
Sergi

23

In Xcode 8 - Swift 3 :

button.setTitle( "entertext" , for: .normal )


3
Das zweite Argument ist jetzt .normalstatt .Normal.
Ted Hopp

1
Das Kapital .Normalwird jetzt einen Fehler geben. Unterbuchstaben sind jetzt korrekt. .normal
Joshua Dance

Ich muss sagen, die ursprüngliche Antwort war: button.setTitle ("entertext", für: .Normal) und es funktioniert Variante für die erste Version von Xcode mit schneller 3.0-Unterstützung
Nikola Lukic

7

Es ist jetzt dies für schnelle 3,

    let button = (sender as AnyObject)
    button.setTitle("Your text", for: .normal)

(Die konstante Deklaration der Variablen ist nicht erforderlich. Stellen Sie nur sicher, dass Sie den Absender über die Schaltfläche wie folgt verwenden.):

    (sender as AnyObject).setTitle("Your text", for: .normal)

Denken Sie daran, dass dies in der IBAction Ihrer Schaltfläche verwendet wird.



2

Sie können das Absenderargument verwenden

  @IBAction func TickToeButtonClick(sender: AnyObject) {

        sender.setTitle("my text here", forState: .normal)


}

Es ist funktionierende Variante für die erste Version von Xcode mit schneller 3.0-Unterstützung später. Normal wird .normal
Nikola Lukic

1

Beachten Sie, dass bei Verwendung von NSButton keine Funktion vorhanden ist setTitle, sondern eine Eigenschaft.

@IBOutlet weak var classToButton: NSButton!

. . .


classToButton.title = "Some Text"

1

In Swift 4 habe ich das alles zuvor versucht, läuft aber nur:

@IBAction func myButton(sender: AnyObject) {
   sender.setTitle("This is example text one", for:[])
   sender.setTitle("This is example text two", for: .normal)
}

1

HINWEIS:

Linie

someButton.setTitle("New Title", forState: .normal)

funktioniert nur , wenn Titel Typ ist Plain .

Geben Sie hier die Bildbeschreibung ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.