본문 바로가기
💻 Development/SwiftUI

[SwiftUI] 0908 설정앱 만들기 중 알게된 것 3 - 리팩토링

by Claudia 끌라우 2023. 9. 11.
반응형

* 공부했던 내용을 주관적으로 해석하여 '제가' 이해하기 쉽도록 작성하였습니다. 잘못된 정보가 있을 시 알려주시면 제게 큰 힘이 됩니다!

* 아래 문서는 공식문서와 설명을 찾으며 공부를 하며 만들었으나, 큰 틀은 개발자리님의 #1 설정앱 실습영상을 참고했습니다.

 

https://youtu.be/KV8U7ts92xw?si=mlGYLWfLLEd9UIYi


[ 반복문 만들기 ]

1. @ViewBuilder 를 활용하기

 

일단 하나의 셀을 떼와서 대체 셀을 만들어보았다.

// 바디 안에 집어 넣어야함

@ViewBuilder
    private func cellularPlainCell() -> some View {  // 뷰빌더 이름 지정
    // 내용 삽입
        HStack {
            Image(systemName: "antenna.radiowaves.left.and.right")
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(width: 20, height: 20)
                .padding(.all, 4)
                .background(.green)
                .foregroundColor(.white)
                .cornerRadius(4)
            NavigationLink("셀룰러", destination: EmptyView())
        }
    }

만든 뒤 원래 들어가야 하는 List 내의 위치에 들어가서 설정한 뷰빌더의 이름을 넣기

 


2. @ViewBuilder 를 활용해서 반복문으로 만들어보기

 

같은 방식으로 뷰빌더를 작성한다.

 

제너릭이란 개념 필요

(추후 별도 글 첨부 예정)

 @ViewBuilder
    private func plainCell<V: View>(imgName: String, cellTitle: String, destination: @escaping () -> V) -> some View {
        HStack {
            Image(systemName: imgName)
                .resizable()
                .aspectRatio(contentMode: .fit)
                .frame(width: 20, height: 20)
                .padding(.all, 4)
                .background(.green)
                .foregroundColor(.white)
                .cornerRadius(4)
            NavigationLink(cellTitle) {
                destination()
            }
        }
    }

같은은 방식으로 원하는 위치에 반복문 삽입

//뷰빌더 이름 (내가 설정한 요소들에 대한 내용){code}

                    plainCell(imgName: "moon.fill", cellTitle: "집중 모드") {
                        EmptyView()
                    }

 

반응형

댓글