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

GuavaMantis
quelle

Antworten:

320

Du kannst tun:

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

Swift 3 und 4:

button.setTitle("my text here", for: .normal)
Steve Rosenberg
quelle
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 )

Nikola Lukic
quelle
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.

Ty Victorson
quelle
2

schnelle 4 Arbeit sowie 3

libero.setTitle("---", for: .normal)

wo libero ein uibutton ist

Giacomo Sighinolfi
quelle
2

Sie können das Absenderargument verwenden

  @IBAction func TickToeButtonClick(sender: AnyObject) {

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


}
mzonerz
quelle
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"
Nathan F.
quelle
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)
}
Grzegorz R. Kulesza
quelle
1

HINWEIS:

Linie

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

funktioniert nur , wenn Titel Typ ist Plain .

Geben Sie hier die Bildbeschreibung ein

Giacoder
quelle