기어가더라도 제대로
[SwiftUI-기초] .Sheet: modal 로 페이지 넘기기(dismiss) 본문
- .alert 와 아주 유사한 메커니즘
- 마찬가지로 someView().present() 이런 메커니즘이 아닌 특정 조건을 만족하면 뷰가 나타나게 설정
- 후속적으로 보여지는 뷰가 자신이 후속적으로 나타나는 뷰라는 것을 알필요가 없다.
- Button을 만들면서 보여지도록 이해해보자.
2022.10.12 - [SwiftUI - 기초] - [SwiftUI-기초] 경고창 - Alert messages
[[SwiftUI-기초] 경고창 - Alert messages
중요한 일이 발생하거나 사용자에게 알릴 필요가 있을 때 alert를 사용한다. alert를 사용하는 방식 뿐만 아니라 SwiftUI를 관통하는 개념이 하나 있다. View 는 프로그램 상태의 함수이다. 이게 무슨
damagucci-juice.tistory.com](https://damagucci-juice.tistory.com/entry/SwiftUI-기초-경고창-Alert-messages)
struct SecondView: View {
var body: some View {
Text("Hello World")
}
}
- 이 뷰를 보여지게 할 것입니다.
struct ContentView: View {
@State private var showingSheet = false
var body: some View {
Button("show Sheet") {
showingSheet.toggle()
}
.sheet(isPresented: $showingSheet) {
SecondView()
}
}
}
- alert 와 매우 유사
SecondView 에서 값을 넘겨받아야한다면..
struct SecondView: View {
let name: String
var body: some View {
Text("Hello \(name)")
}
}
이런 코드면은 위의 코드도 수정이 되어야합니다.
.sheet(isPresented: $showingSheet) {
SecondView(name: "choonsick")
}
- 춘식이가 되어버렸습니다.
Dismiss - dismiss a view programmatically
- .sheet 를 사용하면 아래에서 위로 스와이프되면서 올라오는 뷰가 됩니다.
- 뷰를 내리려면 위에서 아래로 스와이프를 하면 내려가겠죠.
- 다만 이러지 말고, 특정 조건을 만족하면 내려가는 뷰를 만들어보는 것은 어떨까요?
- 여기선 버튼을 누르면 이 뷰를 닫도록 설정을 해보도록 하겠습니다.
struct SecondView: View {
@Environment(\.dismiss) var dismiss
let name: String
var body: some View {
VStack {
Text("Hello \(name)")
Button("Dismiss") {
dismiss()
}
}
}
}
- 간단하게 사용이 가능합니다.
- @Environment property wrapper
- 외부에서 제공되는 값을 저장할 수 있게 생성하는 프로퍼티를 만들도록 해주는 property wrapper
- 유저가 light mode인지 dark mode 인지, font 는 어느 정도 크기인지, timezone은 어디인지 등에 대한 정보를 받을 수 있음
- linux 시스템에서 환경변수라 부르는 것들처럼 사용하는 것임
- 위의 경우는 view 를 dismiss 하는 기능을 사용
참조
https://www.hackingwithswift.com/books/ios-swiftui/showing-and-hiding-views
'SwiftUI - 기초' 카테고리의 다른 글
[SwiftUI-기초] onDelete() - List의 row 삭제하기(Array item delete) (0) | 2022.11.04 |
---|---|
[SwiftUI-기초] Custom Color, dark mode (0) | 2022.11.04 |
[SwiftUI-기초] class 인 인스턴스의 상태 보존(@StateObject, @ObservedObject) (0) | 2022.11.02 |
[SwiftUI-기초] @State가 쓸모 없어지는 지점에 대하여(class, struct) (0) | 2022.11.01 |
[SwiftUI-기초] custom transition (0) | 2022.10.31 |
Comments