ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Swift] Array(repeating: , count:)와 UIStackView
    야매 iOS 2023. 2. 19. 20:51

    문제

    Array(repeating: TempView(), count: 5)를 변수에 할당하고 그 배열을 순회하면서 UIStackView.addArrangedSubview를 통해 UIStackView에 넣어주려고 했었다.

     

    배열은 5개의 element를 갖기 때문에 UIStackView 안에도 5개의 뷰가 들어있을 거라고 생각했다.

    하지만 빌드를 해보니 UIStackView에 단 하나의 뷰만 들어가 있었다.

    확인

    UIStackView의 addArrangedSubview가 어떻게 동작하는지 정확하게 모르지만 같은 주소 값을 갖는 뷰가 현재 UIStackView안에 있다면 가장 최근에 추가된 위치로 옮기거나 무시하는 방식으로 동작하는 것 같다.

     

    Array(repeating: TempView(), count: 5)는 5개의 element를 갖고 있지만 모든 element가 같은 주소를 갖는다. 그렇기 때문에 UIStackView의 addArrangedSubview를 통해 뷰를 추가할 때 UIStackView에 하나의 뷰만 들어가는 것 같다.

     

    이를 확인해 보기 위해 배열을 Array(repeating: TempView(), count: 5)가 아닌 아래와 같은 방식으로 만들어서 할당했다.

    let array: [UIView] = [
    	TempView(),
       	TempView(),
        TempView(),
        TempView(),
        TempView()  
    ]

    이 배열을 순회하면서 UIStackView의 addArrangeSubview 메서드로 뷰를 추가해 주고 빌드해 보니 의도한 대로 화면이 그려졌다.

    Array의 element를 각각 생성해서 넣어줬으므로 다른 주소값을 갖기 때문에 의도한 대로 동작하는 것 같다.

     

     

     

     

     

    '야매 iOS' 카테고리의 다른 글

    [iOS/Swift] Combine 알아보기 ii  (0) 2023.02.23
    [iOS/Swift] Combine 알아보기 i  (1) 2023.02.22
    [iOS/Swift] How to use iOS WidgetKit / 위젯 만들기  (0) 2023.02.19
    Inversion of Control (IOC)  (1) 2022.12.05
    [iOS/Swift] Firebase A/B Test  (0) 2022.11.19
Designed by Tistory.