2014-10-12 16 views
150

Proste pytanie tutaj. Mam UIButton, currencySelector, i chcę programowo zmienić tekst. Oto, co mam:Zmiana tekstu UIButton programowo szybkiego

currencySelector.text = "foobar" 

Xcode daje mi błąd "Oczekiwana deklaracja". Co robię źle i jak mogę zmienić tekst przycisku?

Odpowiedz

414

w Swift 3:

button.setTitle("Button Title",for: .normal) 

Inaczej:

button.setTitle("Button Title", forState: UIControlState.Normal) 
+25

Można pominąć 'UIControlState'. na przykład 'forState: .Normal' – funroll

+6

Swift3 jest teraz' .normal' zapamiętaj małą literę – Matthew

+2

Swift3 zamień 'forState' na' for' –

56

Tylko wyjaśnienie dla tych nowych do programowania Swift i iOS. Poniżej linii kodu:

button.setTitle("myTitle", forState: UIControlState.Normal) 

dotyczy tylko IBOutlets, nie IBActions.

Dlatego, jeśli aplikacja jest za pomocą przycisku w funkcji, aby wykonać jakiś kod, powiedzmy odtwarzania muzyki i chcesz zmienić tytuł z Play do Pause opartego na zmiennej kolanowej, trzeba też stworzyć IBOutlet dla ten przycisk.

Jeśli spróbujesz użyć button.setTitle przeciwko IBAction, pojawi się błąd. To oczywiste, kiedy już to wiesz, ale dla noobów (wszyscy byliśmy) jest to pomocna wskazówka.

+1

Tak, Właśnie zamierzałem google dokładnie, dopóki nie zobaczyłem twojej odpowiedzi. Dzięki! +1 – Evernoob

+1

Jest to wzór w IOS, który zabrał mi trochę czasu, aby odkryć. Istnieją atrybuty elementów interfejsu użytkownika, do których nie masz dostępu, chyba że utworzono IBOutlet. Jeśli kiedykolwiek spróbujesz zmienić atrybut interfejsu użytkownika i nie możesz uzyskać do niego dostępu, upewnij się, że masz zarówno IBAction, który uruchamia jakiś kod, jak i IBOutlet, który zapewnia dostęp do atrybutów. – Bendrix

+5

Ta odpowiedź nie ma sensu. "Nadawcą" akcji będzie przycisk. Możesz zastosować wszystko, co chcesz, do "nadawcy". Do tego nie potrzebujesz gniazdka. – rmaddy

3

Swift 3:

Zestaw przycisk tytuł:

//for normal state: 
my_btn.setTitle("Button Title", for: .normal) 

// For highlighted state: 
my_btn.setTitle("Button Title2", for: .highlighted) 
1

Swift 3

Po podjęciu @IBAction:

@IBAction func btnAction(_ sender: UIButton) { 
    sender.setTitle("string goes here", for: .normal) 
} 

To ustawia nadawcę jako UIButton (zamiast dowolnego), więc jest skierowany do btnAction jako UIButton

4

Swift 3,0

// Standard State 
myButton.setTitle("Title", for: .normal) 
0

Swift 3

let button: UIButton = UIButton() 
button.frame = CGRect.init(x: view.frame.width/2, y: view.frame.height/2, width: 100, height: 100) 
button.setTitle(“Title Button”, for: .normal)