Mengubah teks UIButton cepat secara pemrograman

222

Pertanyaan sederhana di sini. Saya memiliki UIButton, currencySelector, dan saya ingin mengubah teks secara terprogram. Inilah yang saya miliki:

currencySelector.text = "foobar"

Xcode memberi saya kesalahan "Deklarasi yang Diharapkan". Apa yang saya lakukan salah, dan bagaimana saya bisa mengubah teks tombol?

rocket101
sumber

Jawaban:

595

Dalam Swift 3, 4, 5:

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

Jika tidak:

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

Juga @IBOutletharus dinyatakan untuk button.

Gal Marom
sumber
32
Anda bisa menghilangkan UIControlState. misalnyaforState: .Normal
funroll
11
Swift3 sekarang .normalmencatat huruf kecil
Matius
6
Swift3 berubah forStatemenjadifor
Mathew P. Jones
1
Swift3: self.btnBuy.setTitle ("Beli", untuk: UIControlState.normal)
Thiru
5
untuk swift 4 juga button.setTitle("Button Title",for: .normal)berfungsi !, terima kasih
Rakshitha Muranga Rodrigo
74

Hanya klarifikasi untuk mereka yang baru mengenal pemrograman Swift dan iOS . Di bawah baris kode:

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

hanya berlaku untuk IBOutlets, bukan IBActions.

Jadi, jika aplikasi Anda menggunakan tombol sebagai fungsi untuk mengeksekusi beberapa kode, misalkan memutar musik, dan Anda ingin mengubah judul dari Playmenjadi Pauseberdasarkan variabel toggle, Anda juga perlu membuat IBOutletuntuk tombol itu.

Jika Anda mencoba menggunakan button.setTitlemelawan IBActionAnda akan mendapatkan kesalahan. Ini jelas sekali Anda tahu itu, tetapi untuk noobs (kita semua) ini adalah tip yang bermanfaat.

Bendrix
sumber
1
Yap, saya baru saja akan google ini sampai saya melihat jawaban Anda. Terima kasih! +1
Evernoob
1
Ini adalah pola di iOS yang membuat saya perlu waktu untuk menemukannya. Ada atribut item UI yang Anda tidak memiliki akses ke kecuali IBOutlet dibuat. Jika pernah Anda mencoba mengubah atribut UI dan tidak dapat mengaksesnya, pastikan Anda memiliki kedua IBAction yang menjalankan beberapa kode, dan IBOutlet yang menyediakan akses ke atribut.
Bendrix
8
Jawaban ini tidak masuk akal. The senderaksi akan tombol. Anda dapat menerapkan apa pun yang Anda inginkan ke sender. Anda tidak perlu outlet untuk melakukan ini.
rmaddy
2
Baik Bendix menjawab maupun komentarnya tidak benar. Mereka jelas salah.
vikingosegundo
Pertanyaannya tidak menyebutkan pembangun antarmuka sehingga salah untuk menganggap bahwa ini masalahnya.
Edward
13

Swift 5:

    let controlStates: Array<UIControl.State> = [.normal, .highlighted, .disabled, .selected, .focused, .application, .reserved]
    for controlState in controlStates {
        button.setTitle(NSLocalizedString("Title", comment: ""), for: controlState)
    }
Dmitry
sumber
1
Saya harus menggunakan UIControl.State. Dikatakan UIControlState sudah tidak digunakan lagi
HokiEJP
9

Swift 3:

Setel judul tombol:

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

// For highlighted state:
my_btn.setTitle("Button Title2", for: .highlighted)
Bhavin Ramani
sumber
9

Swift 5.0

// Standard State
myButton.setTitle("Title", for: .normal)
Tyler Rutt
sumber
6

Mengubah judul ketika dikaitkan sedikit berbeda:

Saya baru saja mengalami masalah: Jika Anda memiliki UIButton dengan Judul yang Dikaitkan, Anda harus menggunakan:

my_btn.setAttributedTitle(NSAttributedString(string: my_title), for: my_state)

sebagai, per Apple SetTitle Doc :

Jika Anda menetapkan judul dan judul yang dikaitkan untuk tombol, tombol lebih memilih penggunaan judul dikaitkan dari yang ini.

Saya memiliki judul yang dikaitkan dan saya mencoba untuk mengatur Judul di atasnya, tanpa efek ...

Christian Navelot
sumber
3

Cepat 3

Saat Anda membuat @IBAction:

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

Ini menetapkan pengirim sebagai UIButton (bukan Apa saja) sehingga menargetkan btnAction sebagai UIButton

analitik gustavoanalitik
sumber
2

cepat 4.2 dan di atas

menggunakan IBOutlet tombol

btnOutlet.setTitle("New Title", for: .normal)

menggunakan tombol IBAction

@IBAction func btnAction(_ sender: UIButton) {
  sender.setTitle("New Title", for: .normal)
}
midhun p
sumber
0

Cepat 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)
Giang
sumber
0

Untuk mengatur judul untuk tombol dalam Xcode menggunakan swift - 04: pertama buat metode yang disebut setTitle dengan judul parameter dan status UIController seperti di bawah ini;

func setTitle(_ title : String?, for state : UIControl.State)   {

}

dan ingat metode ini dalam metode aksi tombol Anda seperti;

yourButtonName.setTitle("String", for: .state)
Jasani Hardik
sumber