У меня есть несколько кнопок, каждый из которых имеет возможность переключать язык приложения. Вместо того, чтобы создавать несколько IBActions для каждой кнопки, есть ли способ подключить их все к одному IBAction и изменить язык на основе нажатой кнопки? Я думаю, что оператор switch будет полезен в этой ситуации, но не совсем уверен, как его настроить.Как использовать один IBAction для нескольких кнопок в Swift?
ответ
В Interface Builder, выберите Attributes Inspector и установить метку для каждой кнопки с уникальным номером, то вы можете сделать что-то вроде этого:
@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
}
}
Для подключения действия на несколько кнопок: в Interface Builder, щелкните правой кнопкой мыши ViewController в иерархии представлений, затем щелкните левой кнопкой мыши, чтобы перетащить соединение с действиями на каждую кнопку.
Как вы можете подключить каждую кнопку к действию в раскадровке? Это не позволит мне нажать кнопку и перетащить в IBAction. – SwiftyJD
в интерфейсе Builder, щелкните правой кнопкой мыши 'ViewController' в иерархии представлений, затем щелкните левой кнопкой мыши, чтобы перетащить действие на каждую кнопку –
ОК, получилось, спасибо! – SwiftyJD
Да, инструкция switch - это путь сюда. Для UIButton вы связываете его с селектором, который вызывается, когда пользователь взаимодействует с кнопкой, как правило, с событием TouchUpInside. The addTarget method, and valid selector signatures (apple.com) Из этого вы хотите использовать метод в формате @IBAction func doSomething(sender: UIButton)
или @IBAction func doSomething(sender: UIButton, forEvent event: UIEvent)
, так что ссылка на кнопку, которая инициировала событие, передается в селектор.
В коде ViewController, вы будете иметь ссылки на ваши UIButtons (возможно, в раскадровке, или создавать вручную.) Допустим, у вас есть
@IBOutlet weak var frenchButton: UIButton!
@IBOutlet weak var spanishButton: UIButton!
@IBOutlet weak var englishButton: UIButton!
Вы соединили бы все они к тому же методу, и разветвить логику, на основе которой был отправитель. например .:
@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
}
}
Примечание: заявления Дела в Swift должны быть исчерпывающими, поэтому вы должны включать в себя вариант по умолчанию, даже если он никогда не должен быть вызван.
Я не хотел бы установить метку, если мы можем решить эту проблему без тега
@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. Как использовать кнопки на «одном IBAction для нескольких кнопок» в swift 2.x?
- 2. Как использовать один и тот же сегмент для нескольких кнопок в iOS swift?
- 3. Один метод для нескольких кнопок?
- 4. Один скрипт для нескольких кнопок
- 5. Один OnClickHandler для нескольких кнопок
- 6. IBAction для SearchBar в swift
- 7. Как использовать один веб-просмотр для нескольких кнопок
- 8. Один OnClickListener для нескольких кнопок в AlertDialog
- 9. Swift - Как выполняет IBACTION segue
- 10. Один обработчик события .click для нескольких кнопок
- 11. Как использовать функцию jquery для нескольких кнопок
- 12. Как использовать массивы для нескольких кнопок
- 13. Настройте один обработчик событий для нескольких кнопок
- 14. Как объединить несколько текстовых полей в один IBACTION? - Swift
- 15. Один IBAction для нескольких пользовательских прототипов с кнопками
- 16. Swift: IBaction в tableViewCell
- 17. Swift xcode 8 - Использование нескольких кнопок и аудиофайлов
- 18. Swift Unit Testing IBAction
- 19. Координаты кнопок в Swift
- 20. Как использовать несколько кнопок для нескольких потоков в android?
- 21. IBAction Crashing in Swift
- 22. Один IBAction для всех UIStepper в UIViewController
- 23. Как использовать несколько кнопок для нескольких событий отправки в php
- 24. Если инструкции для генерируемых кодом кнопок, Swift
- 25. Только один метод для реализации onTouchListener() для нескольких кнопок
- 26. Как использовать один SetUpTestFixture для нескольких классов?
- 27. Как изменить изображение IBAction UIButton в Swift?
- 28. Как использовать один скрипт для нескольких фреймов
- 29. Как использовать один контроллер для нескольких маршрутов
- 30. Swift: Режим редактирования, ссылка editButtonItem() для IBAction
Да, его хорошая идея; D –
Любая идея, как установить один вверх, который обрабатывает ibactions? – SwiftyJD
Отправитель имеют много свойств: название, тег и другие. также вы можете создать свой собственный класс кнопок с идентификационным свойством. –