본문 바로가기
PROGRAMMING CODE/SWIFT

[SwiftUI] 뷰에서 반복문 사용하기 (ForEach)

by daye_ 2023. 6. 26.

흔히 우리가 아는 foreach문과 SwiftUI에서의 ForEach는 다르다.

 

struct ForEach<Data, ID, Content> where Data : RandomAccessCollection, ID : Hashable

 

함수가 아닌 구조체였던것.

 

ID : Hashable -> 식별된 데이터

Data : RandomAccessCollection -> 콜렉션에서 가져옴

Content -> 뷰 계산

 

 

이전의 글 중 func를 버튼으로 리턴하는 함수와 함께 써본다면 다음과 같음

var body: some View {
        VStack {
            Text("컴퓨터")
            HStack{
                ForEach(1...3 ,id: \.self) {i in
                    rcpButton(i)
                }
            }
        }
        .padding()
    }
    
    ...
    
    func rcpButton(_ num : Int) -> Button<Text> {
        if num==1{
            return Button {
                
            } label: {
                Text("가위")
            }
        }else if num==2{
            return Button {
                
            } label: {
                Text("바위")
            }
        }else {
            return Button {
                
            } label: {
                Text("보")
            }
        }
    }

Id:\.self는 Int값을 사용할때 형식이 맞지 않기때문에 사용해주어야한다.

 

이렇게 코드를 잘 활용하면 동적으로 버튼을 만들 수 있음