Jak zmienić tekst przycisku w Swift Xcode 6?

122

Oto, co próbuję zrobić. Jeśli kiedykolwiek grałeś w Halo lub CoD, wiedziałbyś, że możesz zmienić nazwę wyposażenia broni.

Robię to, abyś mógł zmienić nazwę załadunku za pomocą pola tekstowego. Oto problem, nazwa załadunku w menu ładowania to przycisk (do wyboru i przeglądania informacji o tym załadunku) i mogę po prostu napisać to:

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

Z wyjątkiem tego, że [classTopButton] jest przyciskiem, który nie zezwala na rozszerzenie „.text”

GuavaMantis
źródło

Odpowiedzi:

323

Możesz to zrobić:

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

Swift 3 i 4:

button.setTitle("my text here", for: .normal)
Steve Rosenberg
źródło
14
Albo trochę krócej. Możesz pominąć UIControlStateczęść i po prostu pisać jak button.setTitle("my text here", forState: .Normal).
mustafa
3
Myślę, że warto wspomnieć: buttonjest IBOutlet(w przeciwieństwie do tego, IBActionktóry zawiera tę linię kodu), jeśli korzystasz ze Storyboard.
Sergi
23

W Xcode 8 - Swift 3 :

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

Nikola Lukic
źródło
3
Drugi argument to teraz .normalzamiast .Normal.
Ted Hopp,
1
Kapitał .Normalda teraz błąd. Undercase jest teraz poprawne. .normal
Joshua Dance
Muszę powiedzieć, że oryginalna odpowiedź brzmiała: button.setTitle ("entertext", dla: .Normal) i jest to działający wariant dla pierwszej wersji Xcode z obsługą swift 3.0
Nikola Lukic
7

To jest teraz dla Swift 3,

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

(Stała deklaracja zmiennej nie jest konieczna, tylko upewnij się, że używasz nadawcy z przycisku w ten sposób):

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

Pamiętaj, że jest to używane wewnątrz IBAction twojego przycisku.

Ty Victorson
źródło
3

Możesz użyć argumentu nadawcy

  @IBAction func TickToeButtonClick(sender: AnyObject) {

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


}
mzonerz
źródło
Jest to działający wariant dla pierwszej wersji Xcode z późniejszą obsługą Swift 3.0. Normalny staje się .normal
Nikola Lukic
2

szybka 4 praca, jak również 3

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

gdzie libero jest uibuttonem

Giacomo Sighinolfi
źródło
2

UWAGA:

linia

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

działa tylko wtedy, gdy typem tytułu jest Zwykły .

wprowadź opis obrazu tutaj

giacoder
źródło
1

Zauważ, że jeśli używasz NSButton, nie ma setTitlefunkcji func, zamiast tego jest to właściwość.

@IBOutlet weak var classToButton: NSButton!

. . .


classToButton.title = "Some Text"
Nathan F.
źródło
1

W Swift 4 próbowałem tego wszystkiego wcześniej, ale działa tylko:

@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
źródło