스위프트로 UIKIT방식, 아이폰앱 개발, 05 피커 뷰 사용해 원하는 항목 선택하기

1. 소개

Swift는 Apple 생태계에서 애플리케이션을 개발하는 데 사용되는 최신 프로그래밍 언어입니다. 빠르고 안전하며 모던한 문법을 갖춘 Swift는 iOS 애플리케이션 개발에서 중요한 역할을 하고 있습니다. UIKit는 사용자 인터페이스를 구성하고 관리하기 위한 프레임워크로, 여러 가지 UI 구성 요소를 제공합니다.

이 블로그에서는 UIKit의 구성 요소 중 하나인 Picker View에 대해 살펴보겠습니다. Picker View는 사용자에게 선택 항목을 제공하고, 사용자가 선택한 값을 쉽게 반영할 수 있게 해주는 UI 요소입니다. 예를 들어, 날짜 선택기나 리스트에서 항목을 선택하는 데 유용합니다. 우리는 Swift 언어를 통하여 Picker View를 생성하고 사용하는 방법을 배울 것입니다.

2. Picker View란?

피커 뷰(Picker View)는 여러 개의 항목 중에서 선택할 수 있도록 구성된 뷰입니다. 일반적으로 스크롤 가능한 리스트 형태로 나타나며, 사용자는 원하는 항목을 손가락으로 스크롤하여 선택하게 됩니다. Android의 Spinner나 iOS의 UIAlertController와 유사한 기능을 제공하지만 더욱 직관적이고 사용하기 쉬운 인터페이스를 제공합니다.

iOS의 Picker View는 두 가지 기본 유형이 있습니다.

  • UIPickerView: 일반적으로 2D 형태의 선택기를 만들어 줍니다. 수직으로 스크롤하여 항목을 선택할 수 있습니다.
  • UIDatePicker: 날짜와 시간 선택을 위한 특별한 Picker입니다. 더욱 구체적인 날짜와 시간을 선택할 수 있도록 돕습니다.

3. UIPickerView 기본 구조

UIPickerView는 UITableView와 유사하게 작동하지만, 각 항목은 선택을 위한 중요한 값을 표시합니다. UIPickerView를 사용하기 위해서는 몇 가지 프로토콜을 구현해야 합니다. 데이터 제공 프로토콜과 델리게이트를 따르게 됩니다.


            class MyViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
                var pickerView: UIPickerView!
                var items: [String] = ["Apple", "Banana", "Cherry", "Date", "Elderberry"]
                
                override func viewDidLoad() {
                    super.viewDidLoad()
                    
                    pickerView = UIPickerView()
                    pickerView.dataSource = self
                    pickerView.delegate = self
                    
                    view.addSubview(pickerView)
                }

                // UIPickerView DataSource Methods
                func numberOfComponents(in pickerView: UIPickerView) -> Int {
                    return 1
                }

                func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
                    return items.count
                }
            }
            

4. UIPickerView 설정 및 항목 표시

UIPickerView에 표시할 항목은 ‘items’ 배열에 저장했습니다. 그리고 ‘numberOfComponents’ 메소드는 Picker View의 열 개수를 반환하고, ‘numberOfRowsInComponent’ 메소드는 각 열의 항목 개수를 반환합니다.

이제 각 항목을 표시하기 위해 pickerView(_:titleForRow:forComponent:) 메소드를 구현해야 합니다. 이 메소드는 Picker View의 각 행에 표시할 항목의 제목을 제공합니다.


            func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
                return items[row]
            }
            

5. 항목 선택 처리하기

사용자가 UIPickerView에서 항목을 선택하면, 선택된 값에 따라 어떤 행동을 취할 수 있습니다. 선택된 항목을 얻기 위해 pickerView(_:didSelectRow:inComponent:) 메소드를 구현합니다.


            func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
                let selectedItem = items[row]
                // 선택된 항목을 처리하는 로직
                print("선택한 항목: \(selectedItem)")
            }
            

6. UI 커스터마이징

Picker View는 기본적인 형태로 제공되지만, 다양한 방법으로 커스터마이징할 수 있습니다. 예를 들어, 각 항목에 대해 사용자 정의 뷰를 제공할 수도 있습니다. 이를 위해서는 pickerView(_:viewForRow:forComponent:reusing:) 메소드를 사용합니다.


            func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
                let label = UILabel()
                label.text = items[row]
                label.textAlignment = .center
                // 추가 스타일 지정
                return label
            }
            

7. UIDatePicker 사용하기

UIDatePicker는 특정 날짜와 시간을 설정하는 데 사용할 수 있는 피커입니다. UIDatePicker는 생성할 때 다양한 스타일을 지원하며, 날짜 형식이나 시간 형식으로 사용할 수 있습니다. 아래의 코드 예시를 통해 간단하게 사용할 수 있습니다.


            @IBOutlet weak var datePicker: UIDatePicker!

            override func viewDidLoad() {
                super.viewDidLoad()

                // UIDatePicker 설정
                datePicker.datePickerMode = .date
            }

            @IBAction func dateChanged(_ sender: UIDatePicker) {
                let selectedDate = sender.date
                // 선택된 날짜 처리 로직
                print("선택한 날짜: \(selectedDate)")
            }
            

8. 실제 앱에 피커 뷰 통합하기

이제 우리는 UIPickerView와 UIDatePicker를 설정하며, 이들이 실제 앱과 통합되는 방법을 생략하지 않고 보여줄 것입니다. 기본적으로 우리가 작성한 뷰 컨트롤러를 기반으로 하면, 쉽게 선택된 항목과 날짜를 다른 UI 요소에 반영하거나 저장할 수 있습니다.

예를 들어, 선택된 과일 이름을 UILabel에 표시하는 코드 예시입니다.


            @IBOutlet weak var selectedFruitLabel: UILabel!
            
            func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
                let selectedItem = items[row]
                selectedFruitLabel.text = "선택한 과일: \(selectedItem)"
            }
            

9. 결론

이번 포스트에서는 Swift와 UIKit를 사용하여 UIPickerView와 UIDatePicker를 구현하는 방법에 대해 알아보았습니다. 사용자 친화적인 인터페이스를 구축하고 선택된 항목에 따라 앱의 동작을 제어할 수 있는 방법을 배웠습니다.

Picker View는 앱의 사용자 경험을 풍부하게 만들고, 필요한 정보를 사용자가 쉽게 선택할 수 있도록 도와주는 매우 유용한 도구입니다. 다양한 상황에서 유용하게 사용할 수 있기에, 여러분의 애플리케이션에 맞는 형태로 커스터마이징하여 구현해보시기를 권장합니다.