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

반응형