Inflearn brand logo image

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

duckduck님의 프로필 이미지
duckduck

작성한 질문수

[Lv.2] SwiftUI 중급 - Core Data와 SwiftData로 앱 완성하기

ViewBuilder

ViewBuilder 강의 관련 질문입니다.

해결된 질문

작성

·

26

0

강의 관련된 질문은 언제나 환영입니다 😄

  • 코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)

  • 마크다운을 사용해서 편리하게 글을 작성하세요

  • 먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~

  • 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요

    LocalViewBuilder에서 numberPlate에
    ViewBuilder 매크로를 사용해야되는 이유를 LocalViewBuilder에 선언된 ViewType을 사용하려면 이라고 설명해주셨는 데,
    그것과는 상관없이 numberPlate 안에서 분기 처리된 항목들(view1, view2, view3)이 다 다른 타입(Text, VStack, Image)이라서 ViewBuilder 매크로를 사용해야되는 것이 아닐까요 ??
    설명 듣다가 헷갈려서 질문드립니다.

     

답변 1

0

Jacob(제이콥)님의 프로필 이미지
Jacob(제이콥)
지식공유자

안녕하세요 ducduck 님. 질문 주셔서 감사합니다.

정리하자면

제가 설명한 부분: LocalViewBuilder에 선언된 ViewType을 사용해서 조건부 뷰를 만들기 위해 @ViewBuilder가 필요하다.

질문자님이 이해하신 부분: 각 조건에서 반환하는 뷰들이 서로 다른 타입(Text, VStack, Image)이라서 @ViewBuilder가 필요하다.

실제로는 둘 다 연결된 같은 이유입니다!

ViewType enum을 사용해서 → 조건부 분기를 만들고 → 각 분기에서 다른 타입의 뷰를 반환하기 때문에 → @ViewBuilder가 필요

예시로

@ViewBuilder private var numberPlate: some View {
    if type == .one { Text("1") }      // Text 타입
    else if type == .two { VStack{} }  // VStack 타입  
    else { Image("3") }                // Image 타입
}

SwiftUI에서 some View는 단일 타입만 반환할 수 있는데, @ViewBuilder가 이런 다른 타입들을 하나로 통합해주는 역할을 합니다.

그렇게 때문에 ViewType 을 활용한 조건부 뷰 구현과 서로 다른 타입 처리, 둘 다 @ViewBuilder 가 필요한 이유입니다

 

 

duckduck님의 프로필 이미지
duckduck

작성한 질문수

질문하기