Ho più pulsanti ognuno con la possibilità di cambiare la lingua dell'app. Invece di dover creare più IBActions per ogni pulsante, c'è un modo per averli tutti collegati a una IBAction e cambiare la lingua in base al pulsante premuto? Sto pensando che una dichiarazione di switch sarebbe utile in questa situazione, ma non è esattamente sicuro come configurarla.Come utilizzare una IBAction per più pulsanti in Swift?
risposta
In Interface Builder, selezionare l'ispettore attributi e impostare il tag per ogni pulsante con un numero unico, allora si può fare qualcosa di simile:
@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
}
}
Per collegare l'azione da più pulsanti: in Interface Builder, fare clic con il tasto destro del mouse su ViewController nella gerarchia della vista, quindi fare clic con il tasto sinistro del mouse per trascinare la connessione dell'azione su ciascun pulsante.
Come puoi collegare ciascun pulsante all'azione nello storyboard? Non mi consentirà di fare clic sul pulsante e trascinare su IBAction. – SwiftyJD
in Interface Builder, fare clic con il tasto destro del mouse su 'ViewController' nella gerarchia della vista, quindi fare clic con il tasto sinistro per trascinare la connessione di azione su ciascun pulsante. –
ok, capito, grazie! – SwiftyJD
Sì, una dichiarazione switch è la strada da percorrere qui. Per un UIButton, lo si collega a un selettore che viene chiamato quando l'utente interagisce con il pulsante, generalmente l'evento TouchUpInside. The addTarget method, and valid selector signatures (apple.com) Di questi, si desidera utilizzare un metodo nel formato @IBAction func doSomething(sender: UIButton)
o @IBAction func doSomething(sender: UIButton, forEvent event: UIEvent)
, in modo che un riferimento al pulsante che ha attivato l'evento sia passato al selettore.
Nel codice ViewController, avrete i riferimenti ai tuoi UIButtons (possibilmente in uno storyboard, o create manualmente.) Diciamo che avete
@IBOutlet weak var frenchButton: UIButton!
@IBOutlet weak var spanishButton: UIButton!
@IBOutlet weak var englishButton: UIButton!
Si potrebbe collegare tutti loro per lo stesso metodo, e diramare la logica in base alla quale si era il mittente. es .:
@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
}
}
Nota: le dichiarazioni caso Swift devono essere esaustivo, quindi bisogna includere un caso di default, anche se non dovrebbe mai essere chiamato.
non mi piace per impostare tag, se siamo in grado di risolverlo senza tag
@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 {
}
}
- 1. Una OnClickHandler per più pulsanti
- 2. Swift - chiamare @IBAction metodo viewDidLoad senza parametro
- 3. Come utilizzare TouchID utilizzando Swift?
- 4. Come aggiungere un'azione ai pulsanti in Alert in Swift
- 5. Esiste un modo per utilizzare UNA procedura per più pulsanti in Pascal?
- 6. come utilizzare uiswitch per selezionare la categoria in swift?
- 7. IBAction non viene chiamato
- 8. Come utilizzare openURL per effettuare una telefonata in Swift?
- 9. Passare parametri diversi a IBAction
- 10. Come utilizzare UILocalNotification in Swift
- 11. Come utilizzare addAttribute in Swift
- 12. Posso in qualche modo utilizzare l'associazione facoltativa per più variabili in una riga in Swift?
- 13. Come utilizzare dequeueReusableCellWithIdentifier in Swift?
- 14. Come utilizzare JSTileMap in swift
- 15. Premendo più pulsanti contemporaneamente
- 16. Android un metodo OnClick per più pulsanti?
- 17. IBOutlet e IBAction
- 18. Come utilizzare struct Swift in Objective C
- 19. Xcode non mostra @IBAction per UIButton
- 20. Come utilizzare UILongPressGestureRecognizer con UICollectionViewCell in Swift?
- 21. come utilizzare blocco/chiusura in swift
- 22. Come rendere estensione per più classi Swift
- 23. Come utilizzare dispatch_queue_create in Swift 2.0?
- 24. Come utilizzare setTextColor per i pulsanti di scelta Android?
- 25. Come utilizzare "enumerateChildNodesWithName" con Swift in SpriteKit?
- 26. Forzare NSLocalizedString per utilizzare una lingua specifica utilizzando Swift
- 27. Come utilizzare l'associazione opzionale in Swift 2
- 28. Come utilizzare pedice e apice in Swift
- 29. Come disegnare una linea nel modo più semplice in swift
- 30. Come utilizzare AnyClass in Swift Classe generica
Sì, la sua buona idea; D –
Qualsiasi idea di come impostare uno fino che gestisce ibactions? – SwiftyJD
il mittente ha molte proprietà: titolo, tag e altro. puoi anche creare la tua classe pulsante personalizzata con la proprietà di identificazione. –