본문 바로가기
swift

UISegmentedControl

by 승환파크 2024. 7. 3.

UISegmentedControl 은 여러 세그먼트(버튼)로 구성된 컨트롤이다. 사용자는 하나의 세그먼트를 선택할 수 있으며, 각 세그먼트는 다른 옵션을 나타낸다. 이 컨트롤은 iOS 앱에서 일반적으로 옵션 선택이나 필터링 기능을 제공하는데 사용된다.

 

UISegmentedControl 의 주요 기능

1. 세그먼트 추가 및 삭제 : 세그먼트를 동적으로 추가하거나 삭제할 수 있다.

2. 선택 상태 관리 : 선택된 세그먼트를 변경하고, 해당 이벤트를 처리할 수 있다.

3. 외관 커스터마이징 : 텍스트, 이미지, 생상 등을 설정하여 세그먼트의 외관을 변경할 수 있다.

 

기초적인 사용법

아래의 코드는 간단한 UISegmentedControl 을 설정하고, 사용하는 방법을 알려주는 예제이다.

import UIKit

class ViewController: UIViewController {
    
    let segmentedControl: UISegmentedControl = {
        let items = ["First", "Second", "Third"]
        let segmentedControl = UISegmentedControl(items: items)
        segmentedControl.selectedSegmentIndex = 0
        segmentedControl.translatesAutoresizingMaskIntoConstraints = false
        segmentedControl.addTarget(self, action: #selector(segmentedControlValueChanged(_:)), for: .valueChanged)
        return segmentedControl
    }()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        view.addSubview(segmentedControl)
        
        NSLayoutConstraint.activate([
            segmentedControl.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            segmentedControl.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20),
            segmentedControl.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
            segmentedControl.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20)
        ])
    }
    
    @objc func segmentedControlValueChanged(_ sender: UISegmentedControl) {
        switch sender.selectedSegmentIndex {
        case 0:
            print("First segment selected")
        case 1:
            print("Second segment selected")
        case 2:
            print("Third segment selected")
        default:
            break
        }
    }
}

 

주요 메서드와 속성

init(items: [Any]?) - 세그먼트 타이틀이나 이미지를 사용해 SegmentedControl 을 초기화한다.

selectedSegmentIndex - 현재 선택된 세그먼트의 index이다.

setTitle(_: forSegmentAt: ) - 특정 세그먼트의 타이틀을 설정한다.

setImage(_: forSegmentAt: ) - 특정 세그먼트의 이미지를 설정한다.

insertSegment(withTitle: at: animated: ) - 특정 위치에 새로운 세그먼트를 삽입한다.

removeSegment(at: animated: ) - 특정 위치의 세그먼트를 제거한다.

numberOfSegments - 세그먼트의 총 갯수를 반환한다.

addTarget(_: action: for: ) - 특정 이벤트에 대한 타겟과 액션을 추가한다.

'swift' 카테고리의 다른 글

메모리 관리 이해  (0) 2024.07.09
UIViewController 생명주기  (3) 2024.07.09
UIScrollView  (0) 2024.06.21
UIStackView  (0) 2024.06.21
UIView  (0) 2024.06.21