iOS/코드조각
[iOS, Swift] 라디오버튼 구현하기
검은참깨두유vm
2023. 2. 25. 00:01
반응형
iOS 16.1, Xcode 14.2, Swift 5, UIKit 환경에서 진행했습니다.
라디오버튼 구현의 기본적인 아이디어로는 RadioButton을 관리하는 Controller를 만들고 배열변수에 라디오버튼을 넣습니다.
배열에 넣을 때 normal 상태에서는 기본적인 이미지가 나오게끔, selected 상태일 때는 선택된 이미지가 나오게끔 설정합니다.
기본적으로 선택될 radioButton을 선택을 하고, 버튼이 클릭되면 배열에 담겨있는 버튼 중 하나만 선택되게끔 합니다.
전체코드
class TestViewController: UIViewController {
@IBOutlet weak var radioButton1: UIButton!
@IBOutlet weak var radioButton2: UIButton!
@IBOutlet weak var radioButton3: UIButton!
let radioController = RadioButtonController()
override func viewDidLoad() {
super.viewDidLoad()
radioController.buttonsArray = [radioButton1, radioButton2, radioButton3]
radioController.defaultButton = radioButton1
}
@IBAction func didTapRadioButton(_ sender: UIButton) {
radioController.buttonArrayUpdated(buttonSelected: sender)
}
}
class RadioButtonController: NSObject {
var buttonsArray: [UIButton]! {
didSet {
for button in buttonsArray {
button.setImage(UIImage(systemName: "rectangle"), for: .normal)
button.setImage(UIImage(systemName: "checkmark.rectangle"), for: .selected)
}
}
}
var selectedButton: UIButton?
var defaultButton: UIButton = UIButton() {
didSet {
buttonArrayUpdated(buttonSelected: self.defaultButton)
}
}
func buttonArrayUpdated(buttonSelected: UIButton) {
for button in buttonsArray {
if button == buttonSelected {
selectedButton = button
button.isSelected = true
} else {
button.isSelected = false
}
}
}
}
결과
참조
https://stackoverflow.com/questions/29117759/how-to-create-radio-buttons-and-checkbox-in-swift-ios
반응형