기어가더라도 제대로

[SwiftUI-기초] .Sheet: modal 로 페이지 넘기기(dismiss) 본문

SwiftUI - 기초

[SwiftUI-기초] .Sheet: modal 로 페이지 넘기기(dismiss)

Damagucci-juice 2022. 11. 3. 16:39
  • .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 하는 기능을 사용

choonsick

참조

https://www.hackingwithswift.com/books/ios-swiftui/showing-and-hiding-views

 

Comments