- SwiftUI를 이루는 요소들
- View: 앱에서 보여지는 요소들
- 다만 화면에 보여지는 모든 뷰가 같은 앱 소속인 건 아니다
- Scene: 앱이 다루는 화면 단위
- macOS와 iPadOS는 여러개의 Scene을 동시에 띄울 수 있다.
- Scene도 여러개의 Scene으로 이루어질 수 있다.
- App: 하나의 독립된 프로세스
- 위 요소들은 계층 구조를 이룬다
@main
struct BookClubApp: App {
@StateObject private var store = ReadingListStore()
var body: some Scene {
WindowGroup { /// Scene의 일종
ReadingListViewer(store: store)
}
}
}
struct ReadingListViewer: View {
@ObservedObject var store: ReadingListStore
var body: some View {
NavigationView {
List(store.books) { book in
Text(book.title)
}
.navigationTitle("Currently Reading")
}
}
}
class ReadingListStore: ObservableObject {
init() {}
var books = [
Book(title: "Book #1", author: "Author #1"),
Book(title: "Book #2", author: "Author #2"),
Book(title: "Book #3", author: "Author #3")
]
}
struct Book: Identifiable {
let id = UUID()
let title: String
let author: String
}
- Model은 Scene간에 공유되지만, State는 Scene마다 독립적으로 가져간다.
- State는 SceneStorage를 통해서 자동으로 저장되고 복구될 수 있다.