Birden düğmeleri app dilini geçiş yapabilme kapasitesiyle her bir tane var. Her bir düğme için birden fazla IBActions oluşturmak yerine, bunların hepsinin bir IBAction'a bağlanması ve basılan düğmeye dayalı dili değiştirmesinin bir yolu var mı? Bir anahtar ifadesinin bu durumda kullanılması iyi olacağını, ancak nasıl kurulacağından tam olarak emin olmadığımı düşünüyorum.Swift'de birden çok düğme için bir IBAction nasıl kullanılır?
Interface Builder yılındacevap
, Nitelikler Müfettiş seçip birer numaralı her düğme için Etiket ayarlamak, o zaman böyle bir şey yapabilirsiniz:
@IBAction changeLanguage(sender: AnyObject) {
guard let button = sender as? UIButton else {
return
}
switch button.tag {
case 1:
// Change to English
case 2:
// Change to Spanish
case 3:
// Change to French, etc
default:
print("Unknown language")
return
}
}
birden düğmeleri için harekete bağlamak için: yılında Arabirim Oluşturucu, görünüm hiyerarşisinde ViewController'ı sağ tıklatın, ardından her bir düğmeye eylemi sürüklemek için sol tıklayın.
Her düğmeyi film şeridindeki eyleme nasıl bağlayabilirsiniz? Düğmeyi tıklamama izin vermez ve IBAction'a sürükleyin. Interface Builder'da – SwiftyJD
, view hierarchy'de 'ViewController' öğesini sağ tıklayın, ardından –
her bir butona hareket bağlantısını sürüklemek için sol tıklayın, anladın, teşekkürler! – SwiftyJD
Evet, burada bir anahtar ifadesi yoldur. Bir UIButton için, kullanıcı düğmeyle, genellikle TouchUpInside olayıyla etkileşime girdiğinde çağrılan bir seçiciye bağlarsınız. The addTarget method, and valid selector signatures (apple.com) Bunlar arasından, @IBAction func doSomething(sender: UIButton)
veya @IBAction func doSomething(sender: UIButton, forEvent event: UIEvent)
biçimindeki bir yöntemi kullanmak, böylece olayı tetikleyen düğmeye bir başvuru seçiciye iletilir. senin ViewController kodunda
, sen (muhtemelen film şeridindeki veya el ile oluşturulan.) sizin UIButtons başvurular var Diyelim ki aynı yönteme hepsini bağlayacak
@IBOutlet weak var frenchButton: UIButton!
@IBOutlet weak var spanishButton: UIButton!
@IBOutlet weak var englishButton: UIButton!
var diyelim olacak ve hangisinin gönderici olduğuna göre mantığı çözer. ör .:
@IBAction func changeLanguage(sender: UIButton) {
switch sender {
case frenchButton:
// Change Language to French
print ("C'est si bon")
case spanishButton:
// or Spanish
print ("Muy Bueno")
case englishButton:
// or English
print ("It's pretty cool")
default:
break
}
}
Not: denir asla rağmen, varsayılan bir durum dahil etmek zorunda Swift Case ifadeleri, ayrıntılı olmalıdır.
Biz, etiketi
@IBOutlet weak var firstButton: UIButton!
@IBOutlet weak var secondButton: UIButton!
@IBOutlet weak var thirdButton: UIButton!
@IBAction changeLanguage(sender: UIButton) {
if sender == firstButton {
} else if sender == secondButton {
} else if sender == thirdButton {
}
}
Evet olmadan onun iyi bir fikir bunu çözebilir eğer, etiketi ayarlamak sevmiyorum; D –
Bir fikrin nasıl ibactions kolları bir tane ayarlamak için? – SwiftyJD
göndericinin birçok özelliği var: başlık, etiket ve diğer. Ayrıca kimlik özelliği ile özel düğme sınıfınızı oluşturabilirsiniz. –