-
[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