인프런 커뮤니티 질문&답변

o2k님의 프로필 이미지

작성한 질문수

Part1: 진짜 왕초보 iOS 배우기(SwiftUI, SwiftData, 2024)

Class로 Todo데이터 관리하기

NavigationLink 질문

해결된 질문

24.08.03 15:29 작성

·

63

1

NavigationLink를 통해서 화면 전환을 하게 되면 기본적으로
> Back 버튼이 생성이 됩니다.
혹시 이걸 제가 원하는 형태로 커스텀 할 수 있을까요?

답변 1

0

애구마(agmma)님의 프로필 이미지
애구마(agmma)
지식공유자

2024. 08. 03. 16:07

안녕하세요 o2k님!

먼저 강의 수강해주셔서 감사합니다.

 

네 커스텀 백버튼으로 뒤로가기 기능 구현이 가능합니다!

아래 코드를 참조 하면 되는데요.

 

간단하게 설명해드리면

  1. ContentView = 현재 뷰, DetailView = 다음 뷰

  2. Environment(\.dismiss) 다음 뷰를 업앨 수 있는 기능을 갖고 있는 함수

    1. 이걸 Environment라는 환경에서 가져와서 뷰를 닫을 수 있습니다.

  3. 커스텀 버튼을 네비게이션 반에 넣고 싶으면 .navigationBarBackButtonHidden으로 원래 내비게이션 바를 삭제하고 .toolBar로 새로운 커스텀 네비게이션 아이템들을 생성해주면 됩니다.

  4. 네비바가 아니라 하단 영역에 만들고 싶다면 Button을 만들어서 dismiss()함수를 실행해주면 됩니다.

같은 내용이 Part2에서 설명이 되는데요. 혹시 관심있으시다면 들어보시는 것을 추천드릴게요!ㅎㅎ

 

또 궁금한 사항 있으시면 질문 남겨주세요! 감사합니다.

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView {
            NavigationLink("Go to Details", destination: DetailView())
        }
    }
}

struct DetailView: View {
    @Environment(\.dismiss) private var dismiss

    var body: some View {
        VStack {
            Button("Custom 뒤로가기2") {
                dismiss()
            }
        }
        .navigationBarBackButtonHidden(true)  // 기본 백 버튼 숨기기
        .toolbar {
            ToolbarItem(placement: .topBarLeading) {
                Button {
                    dismiss()
                } label: {
                    HStack{
                        Image(systemName: "chevron.backward")
                        Text("Custom 뒤로가기1")
                    }
                }
            }
        }
    }
}
o2k님의 프로필 이미지

작성한 질문수

질문하기