UIButton metnini programlı olarak hızlı değiştirme


222

Burada basit bir soru. Bir UIButton'um var, currencySelector ve programlı olarak metni değiştirmek istiyorum. İşte sahip olduğum şeyler:

currencySelector.text = "foobar"

Xcode bana "Beklenen Açıklama" hatasını veriyor. Neyi yanlış yapıyorum ve düğmenin metnini nasıl değiştirebilirim?

Yanıtlar:


595

Swift 3, 4, 5'te:

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

Aksi takdirde:

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

Ayrıca bir @IBOutletilan edilmelidir vardır button.


32
Atlayabilirsiniz UIControlState. örneğinforState: .Normal
funroll

11
Swift3 şimdi .normalküçük harf notu
Matthew

6
Swift3 değişikliği forStateiçinfor
Mathew P. Jones

1
Swift3: self.btnBuy.setTitle ("Satın al", için: UIControlState.normal)
Thiru

5
hızlı 4 için de button.setTitle("Button Title",for: .normal)çalışıyor !, teşekkürler
Rakshitha Muranga Rodrigo

74

Swift ve iOS programlamaya yeni başlayanlar için bir açıklama . Kod satırının altında:

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

sadece için geçerlidir IBOutlets, değil IBActions.

Uygulama bazı kod çalıştırmasına bir fonksiyonu olarak bir düğmeyi kullanarak Yani eğer, müzik çalmaya ve başlığını değiştirmek istediğiniz söylemek Playiçin Pausebir geçiş değişkeni dayalı, aynı zamanda bir oluşturmanız gerekir IBOutleto düğme için.

Birine button.setTitlekarşı kullanmaya çalışırsanız IBActionbir hata alırsınız. Bir kez sen-ebilmek bilmek onun açık, ama noobs (hepimiz vardı) için bu yararlı bir ipucu.


1
Evet, cevabınızı görene kadar tam olarak bu google'daydım. Teşekkürler! +1
Evernoob

1
IOS'ta keşfetmem biraz zaman alan bir model. Bir IBOutlet oluşturulmadığı sürece erişemediğiniz UI öğelerinin nitelikleri vardır. Bir kullanıcı arayüzünün niteliğini değiştirmeye çalışıyorsanız ve ona erişemiyorsanız, hem kod çalıştıran IBAction'a hem de özniteliklere erişim sağlayan IBOutlet'e sahip olduğunuzdan emin olun.
Bendrix

8
Bu cevap bir anlam ifade etmiyor. senderEylem düğmesi olacaktır. İstediğiniz her şeyi uygulayabilirsiniz sender. Bunu yapmak için bir prize ihtiyacınız yoktur.
rmaddy

2
Ne Bendix yanıtı ne de yorumu doğru. Açıkça yanlıştırlar.
vikingosegundo

Soru, arayüz oluşturucunun durumun böyle olduğunu varsaymaktan çok yanlış bahsetmiyor.
Edward

13

Hızlı 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
UIControl.State kullanmalıydım.
UIControlState'in

9

Hızlı 3:

Düğme başlığını ayarla:

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

İlişkilendirildiğinde başlığı değiştirmek biraz farklıdır:

Az önce bir sorunla karşılaştım: İlişkilendirilmiş Başlığa sahip bir UIButton'unuz varsa, şunu kullanmanız gerekir:

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

olarak, başına elma SetTitle Doc :

Düğme için hem bir başlık hem de atfedilen bir başlık ayarlarsanız, düğme atfedilen başlığın bunun üzerinde kullanılmasını tercih eder.

Nitelikli bir başlığım vardı ve setTitle üzerinde hiçbir etkisi olmadan denedim ...


3

Hızlı 3

@IBAction yaptığınızda:

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

Bu, göndereni UIButton (Herhangi biri yerine) olarak ayarlar, böylece btnAction'ı bir UIButton olarak hedefler


2

hızlı 4.2 ve üstü

düğmenin IBOutlet'ini kullanma

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

düğmenin IBAction'ı kullanarak

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

0

Hızlı 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

Swift - 04 kullanarak Xcode'da bir düğme için bir başlık ayarlamak için: önce parametre başlığı ve aşağıdaki gibi UIController durumuyla setTitle adlı bir yöntem oluşturun;

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

}

ve düğme yöntemi gibi bu yöntemi hatırlayın;

yourButtonName.setTitle("String", for: .state)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.