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?

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.


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.


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)
    }

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)

9

Swift 5.0

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

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 ...


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


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)
}

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)

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)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.