반응형
Hacking with Swift 사이트의 강좌 번역본입니다.
[원문 : https://www.hackingwithswift.com/quick-start/swiftui/how-to-group-views-together]
How to group views together
하나의 역할에 여러개의 뷰가 필요한 경우에(예를들어, 함께 전환(transition)하기) SwiftUI의 Group 뷰를 사용해야 합니다. 이는 근본적인 기술적 이유 때문에 특히 중요하며, 한 번에 부모 뷰에 10개 까지의 뷰만 추가할 수 있기 때문입니다.
이를 설명하기 위해, 10개의 텍스트가 있는 VStack이 있습니다.
VStack {
Text("Line")
Text("Line")
Text("Line")
Text("Line")
Text("Line")
Text("Line")
Text("Line")
Text("Line")
Text("Line")
Text("Line")
}
잘 동작하지만, 11번째 텍스트를 추가하려는 경우에, 다음과 같은 오류가 발생할 것입니다.
ambiguous reference to member 'buildBlock()'
아마도 다음과 같이 긴 오류의 목록이 따라나올 것입니다.
SwiftUI.ViewBuilder:3:24: note: found this candidate
public static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>(_ c0: C0, _ c1: C1, _ c2: C2, _ c3: C3, _ c4: C4, _ c5: C5, _ c6: C6, _ c7: C7, _ c8: C8, _ c9: C9) -> TupleView<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)> where C0 : View, C1 : View, C2 : View, C3 : View, C4 : View, C5 : View, C6 : View, C7 : View, C8 : View, C9 : View
이는 SwiftUI의 뷰 만드는 시스템이 뷰 1, 뷰 2, 뷰 3, 4, 5, 6, 7, 8, 9, 10을 추가할 수 있도록 다양한 코드로 설계되었기 때문이지만, 11을 넘어서는 안됩니다 - 동작하지 않습니다.
다행히, 다음과 같이 group을 사용할 수 있습니다.
var body: some View {
VStack {
Group {
Text("Line")
Text("Line")
Text("Line")
Text("Line")
Text("Line")
Text("Line")
}
Group {
Text("Line")
Text("Line")
Text("Line")
Text("Line")
Text("Line")
}
}
}
정확히 같은 결과를 만들어내며, 이제는 VStack이 두개의 뷰(두개의 group)만을 포함하고 있기 때문에, 뷰 10개 제한을 넘어 설 수 있습니다.
반응형
'SwiftUI > Containers' 카테고리의 다른 글
How to hide and show the status bar (0) | 2019.11.22 |
---|---|
How to embed views in a tab bar using TabView (0) | 2019.11.21 |
How to add bar items to a navigation view (0) | 2019.11.21 |
How to embed a view in a navigation view (0) | 2019.11.21 |
Working with containers (0) | 2019.11.21 |