2016-06-16 17 views
5

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ında
+0

Evet olmadan onun iyi bir fikir bunu çözebilir eğer, etiketi ayarlamak sevmiyorum; D –

+0

Bir fikrin nasıl ibactions kolları bir tane ayarlamak için? – SwiftyJD

+0

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

cevap

19

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

+1

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

+4

, view hierarchy'de 'ViewController' öğesini sağ tıklayın, ardından –

+1

her bir butona hareket bağlantısını sürüklemek için sol tıklayın, anladın, teşekkürler! – SwiftyJD

6

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.

3

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 { 

    } 
} 
İlgili konular