Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

Swift로 UISegmentedControl을 코드로 추가하는 방법 완벽 가이드

프로그래밍 방식으로 UISegmentedControl 추가하기

iOS 앱에서 Swift를 사용해 UISegmentedControl을 코드로 추가하려면 크게 두 가지 작업이 필요합니다. 첫 번째는 세그먼트 컨트롤 인스턴스를 생성하는 것이고, 두 번째는 사용자가 세그먼트를 탭했을 때 동작할 액션 메서드를 연결하는 것입니다.

아래에서 단계별로 자세히 살펴보겠습니다.

1단계: 세그먼트 컨트롤 생성 함수 작성

먼저 화면에 세그먼트 컨트롤을 추가하는 함수를 만들어 보겠습니다. 이 함수 안에서는 표시할 항목 목록을 정의하고, 컨트롤의 위치와 크기를 지정한 뒤, 액션을 등록합니다.

func addControl() {
    let segmentItems = ["First", "Second"]
    let control = UISegmentedControl(items: segmentItems)
    control.frame = CGRect(x: 10, y: 250, width: (self.view.frame.width - 20), height: 50)
    control.addTarget(self, action: #selector(segmentControl(_:)), for: .valueChanged)
    control.selectedSegmentIndex = 1
    view.addSubview(control)
}

코드를 살펴보면 다음과 같은 흐름으로 동작합니다.

  • segmentItems: 세그먼트에 표시될 항목 이름들을 배열로 정의합니다.
  • control.frame: x 좌표 10, y 좌표 250 위치에 화면 너비에서 좌우 여백 20을 뺀 크기, 높이 50으로 프레임을 설정합니다.
  • addTarget: 값이 변경될 때(.valueChanged) 호출될 액션 메서드를 등록합니다.
  • selectedSegmentIndex = 1: 초기 선택 상태를 두 번째 세그먼트로 지정합니다.
  • view.addSubview(control): 완성된 컨트롤을 현재 뷰 계층에 추가합니다.

2단계: 뷰 컨트롤러에서 함수 호출

작성한 addControl() 함수는 뷰 컨트롤러의 viewDidLoad() 같은 적절한 시점에 호출하면 됩니다. 이렇게 하면 화면이 로드되는 즉시 세그먼트 컨트롤이 나타납니다.

3단계: 세그먼트 선택 액션 구현

다음으로 사용자가 세그먼트를 탭했을 때 실행될 액션 메서드를 구현해야 합니다. @objc 속성을 붙여 Objective-C 런타임에서도 접근 가능하도록 하는 것이 중요합니다.

@objc func segmentControl(_ segmentedControl: UISegmentedControl) {
    switch (segmentedControl.selectedSegmentIndex) {
        case 0:
            // 첫 번째 세그먼트가 탭되었을 때 처리
        break
        case 1:
            // 두 번째 세그먼트가 탭되었을 때 처리
        break
        default:
        break
    }
}

selectedSegmentIndex 값을 기준으로 switch 문을 사용해 각 세그먼트마다 원하는 동작을 분기 처리할 수 있습니다. 예를 들어 첫 번째 세그먼트에서는 목록 뷰를, 두 번째 세그먼트에서는 그리드 뷰를 보여주는 식의 UI 전환에 활용할 수 있습니다.

실행 결과 확인

위 코드를 iOS 시뮬레이터에서 실행하면 아래와 같은 결과가 출력됩니다. 화면 하단에 "First"와 "Second" 두 개의 세그먼트가 표시되며, 두 번째 세그먼트가 기본적으로 선택된 상태로 나타납니다.

Swift로 UISegmentedControl을 코드로 추가하는 방법 완벽 가이드

마무리

이처럼 UISegmentedControl은 스토리보드 없이도 몇 줄의 코드만으로 손쉽게 구현할 수 있습니다. 인터페이스 빌더 대신 코드로 UI를 구성하면 버전 관리가 용이하고, 동적으로 항목을 변경하기도 쉽다는 장점이 있습니다. 실제 프로젝트에서는 Auto Layout 제약 조건을 함께 적용해 다양한 화면 크기에 대응하는 것이 좋습니다.