본문 바로가기

SwiftUI

(2)
[SwiftUI] UICollectionView + SwiftUI 뷰 혼용해서 사용하기 *경험을 통해 쓰는 글로, 틀릴 수 있습니다. 1. SwiftUI를 혼용하게 된 계기 SwiftUI가 나온지 꽤 됐지만 당연히 대부분의 기존 프로젝트는 UIKit로 이루어져있다. 이런 상황에서 SwiftUI로 조금씩 변환하고 있는데, 아직 여러 제약사항이 많아서 부분적으로 진행하고있다. 가장 흔히 쓰이는 UICollectionView의 Cell에 SwiftUI 뷰를 적용하는 것부터 시작을했는데 간단하다고 생각했지만 의외로 복잡했다. 오늘은 이 과정에 대해 정리해보려한다! 2. 컬렉션뷰에서 사용하는 Cell에 SwiftUI View import SwiftUI 뷰 만들기 일단 Cell로 사용될 SwiftUI 뷰를 간단하게 만들어야한다. struct CellView: View { var number: Int ..
[SwiftUI] ForEach를 통해 뷰 생성 시 duplicated init 버그 1. 현상 현상은 iOS 16.0 이상에서 List, VStack 등 내부에서 ForEach를 통해 여러 뷰를 생성할 때 실제로는 뷰가 두 번씩 init된다는 것이다. 이렇다보니 뷰 생성 시 수행하는 로직이 있었는데 해당 로직이 불필요하게 2배씩 호출되는 이슈가 있었다. (body에는 한 번만 진입한다) 2. 샘플 코드 및 결과 아래는 간단하게 코드와 해당 코드의 실행 결과이다. struct ContentView: View { var numbers: [Int] = Array(1...10) var body: some View { VStack { ForEach(self.numbers, id: \.self) { number in NumberView(number: number) } } .padding() } }..