-
Notifications
You must be signed in to change notification settings - Fork 4
UIHostingConfiguration(UIKit TableView ‐ SwiftUI Cell)
현재 Cell Flow는
UITableView → UITableViewCell → UIHostingConfiguration → View(SwiftUI)
이렇게 되어 있습니다.
UIHostingConfiguration으로 SwiftUI의 View
를 Cell로 변환
을 해주고 있죠
myCell.contentConfiguration = UIHostingConfiguration {
HStack {
Image(systemName: "star").foregroundStyle(.purple)
Text("Favorites")
Spacer()
}
}
하지만 SwiftUI → UIKit
을 바꾸면서 UIHostingViewController
가 계속해서 생성
⚠️ 그렇게 되면UIHostingViewController 개수 = Cell 개수
로
많은 ViewController가 생기게 되는거니 문제가 생기지 않을까?
에서 시작되어 작성했습니다.
UIHostingConfiguration
을 사용하면서, UIHostingController
이 SwiftUI의 뷰를 ViewController로 취급하여 사용하는 것처럼, UIHostingConfiguration도 뷰컨트롤러를 생성하는 것이 아닐까 생각했습니다. 이로 인해 생성되는 모든 셀 내부에 뷰컨트롤러가 포함되는가?하는 우려를 하게되었습니다.
우선 해야할 부분이 UIHostingConfiguration이 어떻게 동작하는지 찾아보려고 했습니다.
아래와 같이 UIViewController에서 View를 가지고
- 사실 채팅방 Cell은 엄청 간단한 UI인데 굳이 SwiftUI를 사용해야할까?
- 복잡한 UI면 SwiftUI로 구성을 하게 되면 더욱 쉽게 구현이 가능할텐데 채팅은 사실 TextView가 전부일 것 같네요..
UIHostingConfiguration과 UIHostingController의 차이점
UIHostingConfiguration
은 iOS16부터 SwiftUI로 UICollectionView
또는 UITableView
셀을 원활하게 빌드할 수 있도록 추가되었습니다.(WWDC22)
UIHostingController
는 SwiftUI 뷰를 UIViewController
로 래핑하여 UIKit에서 사용할 수 있게 만들어주는 객체인 반면,
UIHostingConfiguration
은 UIKit에서 SwiftUI 뷰를 간단하게 UI 구성 요소로 설정해줍니다. UIHostingConfiguration
은 뷰 컨트롤러를 생성하지 않으며, UITableViewCell
이나 UICollectionViewCell
의 콘텐츠 구성을 할 때 사용될 수 있습니다.
따라서 UIViewController
의 생성과 관련된 메모리나 성능 오버헤드를 걱정할 필요가 없겠다는 판단을 했습니다.
https://developer.apple.com/kr/videos/play/wwdc2022/10072/
https://developer.apple.com/documentation/SwiftUI/UIHostingConfiguration