2014-12-04 9 views
5

Temel olarak, ana ekranımda üç düğmem var.Swift - UIButton'a dokunulduğunda metnin rengini ve boyutunu değiştirin

Bu düğmelerden birini seçtiğimde, seçilen düğmedeki metnin kalın olarak değiştirilmesini ve rengi değiştirmesini (mavi) istiyorum.

Farklı bir düğme seçtiğimde, yeni seçilen düğmenin koyu olarak değişmesini ve rengi (mavi) değiştirmesini ve önceden seçili olan düğmenin normale dönmesini istiyorum. (koyu olmayan ve siyah metin)

Bu düğmelerde, komut dosyasına bir eylem gönderim var.

Bu benim sahip olduğum şey, işe yaramaya gelemiyorum. Yardım çok takdir edilecektir!

@IBAction func buttonOne(sender: UIButton){ 
    sender.setTitleColor(UIColor.blueColor(), forState: UIControlState.Highlighted) 
} 

Ben UIControlState üzerinde .Highlighted ve .Selected çalıştı, ne işe görünmektedir var. Aşağıdakileri de denedim, ama işe yaramayacağım.

@IBAction func buttonOne(sender: UIButton){ 
    sender.titleLabel?.textColor = UIColor.blueColor() 
} 

Ben gönderen bir UIButton beri, ve bunun dışına değerlerini alıp bunları çalışacak sıfırlamayı tıklandığı düğmesine olduğunu düşündüm. Bir şeyleri kaçırdığına inanıyorum.

Eğer UIControlState.Normal

Selected çoğu durumda hiçbir şey yapmaz istediğiniz gibi

cevap

4

Sesler Teşekkürler ve düğmeye basıyoruz sadece iken Highlighted olduğunu. Aynı işleve her düğme eylemleri bağlamak,

@IBAction func buttonPressed(sender: UIButton) { 
    sender.titleLabel!.textColor = UIColor.blueColor() 
    sender.transform = CGAffineTransformMakeScale(0.8, 0.8) 
} 

@IBAction func buttonReleased(sender: UIButton) { 
    sender.titleLabel!.textColor = UIColor.redColor() 
    sender.transform = CGAffineTransformIdentity 
} 
+0

Teşekkürler! Rengi siyah olarak değiştirdi. Kafamı son saat boyunca monitörüme karşı vurdum ve bunu anlayabildim. Teşekkür ederim! Yine de soruyu takip et - Yeni bir düğmeye bastığımda diğer düğmelere geri dönmeyi nasıl sağlarım? – Nate4436271

+0

(Siyah? Mavi istediğinizi düşündünüz mü?) Her düğmeyi görünüm denetleyicisine bir IBOutlet özelliği olarak bağlayın ve kişinin IBAction'ı tetiklendiğinde, bu yöntemin içinde istediğiniz diğer düğmeleri de değiştirin. Muhtemelen hangi düğmenin aktif olanı hatırlatan bir özelliğe (örneğin, 1-3'ten bir sayı gibi) ihtiyaç duyar. Ayrıca 3 ayrı düğme yerine bölümlenmiş bir kontrol kullanmayı düşünebilirsiniz. – shim

+1

Etkin kutunun mavi olmasını ve etkin olmayan kutuların siyah olmasını istiyorum. Önerileriniz çok yardımcı oldu, teşekkürler! – Nate4436271

2

Belki bir dönüşüm ile yapabileceğiniz ve aşağıdaki kodu deneyin: Daha fazla bilgiye buradan

butnClicked fonk

@IBAction (gönderici: UIButton) {

for tg in 1...2 { 
     print(sender.tag) 
     let tmpButton = self.view.viewWithTag(tg) as? UIButton 
     if tmpButton?.tag == sender.tag { 
      tmpButton?.setTitleColor(.red, for: .normal) 
     } else { 
      tmpButton?.setTitleColor(.gray, for: .normal) 
     } 
    } 

Umut yardımcı olacaktır.

+0

Hızlı cevap için teşekkürler! Üç düğüme sahip olduğum için, her düğme için iki işlevden kaçınmak istiyorum. Eğer devletleri anlayamazsam, bunu dene. İyi bir çözüm gibi görünüyor. – Nate4436271

+0

sadece 3 düğme için bir dizi tutun ve bunları sıfırlamak için tıklama işlevinde bunların üzerinden yineleyin. tıklanan tıklama için tıklanmış durumu ayarlayın. – datayeah