IOS개발: SWIFT/6. Swift UI로 UI 개발하기

SwiftUI 구성 요소: List, NavigationView, TabView

_Blue_Sky_ 2024. 9. 14. 14:32
728x90
728x90

SwiftUI의 핵심 구성 요소: List, NavigationView, TabView 심층 분석

SwiftUI는 간결하고 직관적인 문법으로 iOS 앱 개발을 혁신한 UI 툴킷입니다. 이 중 List, NavigationView, TabView는 앱의 구조를 구성하고 사용자에게 친숙한 인터페이스를 제공하는 데 필수적인 역할을 합니다. 각 구성 요소의 특징과 사용법을 예시와 함께 자세히 알아보겠습니다.

1. List: 데이터 목록 효과적으로 표현하기

List는 다량의 데이터를 효율적으로 표현하는 데 사용되는 SwiftUI의 핵심 뷰입니다. 각 아이템은 ForEach를 사용하여 동적으로 생성되며, 사용자는 스크롤하여 모든 아이템을 확인할 수 있습니다.

기본 구조

List {
    ForEach(items) { item in
        Text(item.name)
    }
}
 
  • items: 표시할 데이터의 배열
  • ForEach: 배열의 각 요소를 순회하며 뷰를 생성
  • Text: 각 아이템을 표시하는 텍스트 뷰

예시: To-Do List

struct ToDoList: View {
    @State private var toDos = ["운동하기", "책 읽기", "코드 작성"]

    var body: some View {
        List {
            ForEach(toDos, id: \.self) { todo in
                Text(todo)
            }
            .onDelete(perform: deleteItems)
        }
    }

    func deleteItems(at offsets: IndexSet) {
        toDos.remove(atOffsets: offsets)
    }
}
 

다양한 기능:

  • Section: List를 여러 섹션으로 나눌 수 있습니다.
  • onDelete: 스와이프하여 아이템 삭제 기능을 추가할 수 있습니다.
  • onMove: 아이템 순서 변경 기능을 추가할 수 있습니다.
  • custom cell: CustomCell을 정의하여 다양한 형태의 리스트 아이템을 만들 수 있습니다.

2. NavigationView: 멀티 페이지 앱 구축하기

NavigationView는 앱의 탐색 경로를 제공하고, 다양한 페이지 간의 이동을 관리하는 데 사용됩니다.

기본 구조

NavigationView {
    List {
        // List 내용
    }
    .navigationTitle("제목")
}
 
  • navigationTitle: NavigationView의 제목을 설정합니다.
  • NavigationLink: 다른 페이지로 이동하는 링크를 생성합니다.

예시: 상세 화면 이동

struct ContentView: View {
    var body: some View {
        NavigationView {
            List(0..<20) { index in
                NavigationLink(destination: DetailView()) {
                    Text("Item \(index)")
                }
            }
            .navigationTitle("Items")
        }
    }
}
 

다양한 기능:

  • NavigationLink: 다양한 스타일의 링크를 생성할 수 있습니다.
  • isDetailLink: 상세 화면인지 여부를 설정할 수 있습니다.
  • navigationBarItems: NavigationBar에 추가적인 항목을 배치할 수 있습니다.

3. TabView: 탭을 이용한 앱 구조 구성하기

TabView는 탭을 통해 여러 페이지를 관리하는 데 사용됩니다. 각 탭은 별도의 뷰를 표시하며, 사용자는 탭을 클릭하여 원하는 페이지로 이동할 수 있습니다.

기본 구조

TabView {
    Text("첫 번째 탭")
        .tabItem {
            Label("첫 번째", systemImage: "star")
        }
    Text("두 번째 탭")
        .tabItem {
            Label("두 번째", systemImage: "square")
        }
}
 
  • tabItem: 각 탭의 제목과 아이콘을 설정합니다.

예시: 탭을 이용한 앱

struct TabViewExample: View {
    var body: some View {
        TabView {
            ContentView()
                .tabItem {
                    Label("Home", systemImage: "house")
                }
            SettingsView()
                .tabItem {
                    Label("Settings", systemImage: "gear")
                }
        }
    }
}
 

다양한 기능:

  • badge: 탭 아이콘에 배지를 표시할 수 있습니다.
  • selection: 현재 선택된 탭을 설정할 수 있습니다.

결론

List, NavigationView, TabView는 SwiftUI에서 앱의 기본 구조를 구성하는 데 필수적인 뷰입니다. 이러한 구성 요소를 효과적으로 활용하여 사용자에게 직관적이고 매력적인 앱을 개발할 수 있습니다.

728x90
728x90