[SwiftUI] View를 종료하는 방법

Page·2022년 5월 24일
0

SwiftUI

목록 보기
6/18

피드백

뷰를 종료시키는(스크린에서 없애는) 방법을 나열해보면

  1. Binding 이용(sheet이나 fullscreencover 등)
  2. Binding & offset 이용
  3. swiftui에서 기본으로 제공하는 방법 이용(navigation view의 백 버튼 등 )

그리고

  1. presentationMode.wrappedValue.Dismiss() 이용

여러 방법이 있으니 뷰를 없애고 싶으면 상황에 맞게 이용하면 될거 같다.
여기서는 presentationMode를 간단하게 이용하려고 한다.

Navigation View 기본 사용

코드

struct ContentView: View {
    
    var body: some View {
        
        NavigationView {
            NavigationLink {
                MyPresentationMode()
            } label: {
                Text("Navigation")
        }
    }
}
struct MyPresentationMode: View {
    
    var body: some View {
        Text("Navigation View")
    }
}

동작

기본적으로는 이런식으로 상단의 버튼을 통해서 돌아간다.

PresentationMode 이용하기

코드

struct ContentView: View {
    
    var body: some View {
        
        NavigationView {
            NavigationLink {
                MyPresentationMode()
                    .navigationBarBackButtonHidden(true)
            } label: {
                Text("Navigation")
        }
    }
}
struct MyPresentationMode: View {
    
    @Environment(\.presentationMode) var presentationMode
    
    var body: some View {
        Button {
            self.presentationMode.wrappedValue.dismiss()
        } label: {
            Text("View Close")
            
        }

    }
}

동작

navigation view의 상단 버튼을 없애서 기존처럼 돌아갈 수 없게 만들었지만 wrappedValue.dismiss()를 이용해 뷰를 종료시킬 수 있다.

버튼을 이용해서 특정 기능 후 뷰를 종료시키고 싶으면 Binding이 있을 경우 toggling을 하면 되겠지만 그렇지 않은 경우 이것을 이용하면 될거 같다.

0개의 댓글