개발/SWIFT 아이폰 / / 2023. 7. 17. 16:41

SwiftUI Sheet, fullScreenCover로 다른 화면 띄우기, 데이터 전달

반응형

이미지 선택 체크후 버튼 클릭하여 모달방식으로 다른화면 띄우기 및 데이터 전달

 

iOS 13 이상 Sheet,

iOS 14 이상 fullScreenCover

struct ContentView: View {
    @State private var isImageTapped = false
    @State private var isShowingModal = false
    @State private var data = ""
    
    var body: some View {
        VStack {
            if isImageTapped {
                Image(systemName: "heart")
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: 200, height: 200)
                    .onTapGesture {
                        isImageTapped.toggle()
                    }
            } else {
                Image(systemName: "heart.fill")
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: 200, height: 200)
                    .onTapGesture {
                        isImageTapped.toggle()
                    }
            }

            Button(action: {
                isShowingModal = isImageTapped
                data = "데이터"
            }) {
                Text("출력하기")
                    .padding()
                    .foregroundColor(.white)
                    .background(isImageTapped ? Color.red : Color.blue) // 조건에 따라 색상 변경
                    .cornerRadius(10)
            }
            .padding()

            //.sheet(isPresented: $isShowingModal) {
            .fullScreenCover(isPresented: $isShowingModal) {
                ModalView(isPresented: $isShowingModal, data: $data)
            }
        }
    }
}

struct ModalView: View {
    @Binding var isPresented: Bool
    @Binding var data: String
    
    var body: some View {
        VStack {
            Text("전달한 : \(data)")
            
            Button("닫기") {
                isPresented = false
            }
        }
        .padding()
    }
}

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유