개발자

SwiftUI 매개변수에 View를 할당하고 싶어요.

2023년 02월 02일조회 162

SwiftUI 시작한 지 2주 정도 밖에 안돼서 질문이 조금 미숙한 점 미리 양해 구합니다. SubView에 다른 뷰를 매개변수로(?) 처리하고 싶습니다. 같은 UI의 NavigationLink를 여러 개 나열해서 각 링크를 클릭할 때 각각 다른 View로 이동하도록요. 근데 매개변수 toView의 타입을 View로 지정했더니 아래 사진과 같은 오류가 떴고 타입을 View 대신 any View로 설정했더니 SubView(toView: DayEndTime()) 여기에서 DayEndTime의 타입이 any View가 아니라고 오류가 뜹니다. 어떻게 하는 지 알려주시면 감사하겠습니다!!

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 2

김민식님의 프로필 사진

하나의 뷰 안에 링크할 뷰를 인스턴스로 갖고 있는 방법이 그리 좋은 시도는 아닌 것처럼 보입니다! 인스턴스로 갖고 있는 것보다는 NavigationLink body에 바로 ToView()를 초기화 해주는 것이 좋구요! 객체 간의 의존성을 낮추기 위해 Custom Environment 같은 개념으로 상태를 넘겨주면서 화면 이동을 시키는 개념은 익혀 보는것도 좋을 것 같네요!!! 혹시라도 더 도움이 필요하시다면 연락주세요!!

박희천님의 프로필 사진

제가 코드를 돌려보진 않았지만 약간 이런거 원하시는 건가요? struct ContentView: View { var body: some View { NavigationView { SubView { Text("content") } } } } struct SubView<T: View>: View { let content: () -> T init(@ViewBuilder content: @escaping () -> T) { self.content = content } var body: some View { NavigationLink(destination: content) { Text("hello") } } }

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!