Код: Выделить всё
struct ParentViewX: View {
@ObservedObject private var viewModel: ViewModel
init(viewModel: ViewModel) {
self.viewModel = viewModel
}
var body: some View {
VStack(alignment: .center, spacing: 0) {
switch viewModel.state {
case .visible(let data):
ScrollView {
VStack(alignment: .leading, spacing: 0) {
ForEach(data.header) { component in
component.buildWith(action: viewModel.handleAction)
}
}
.environment(\.backgroundType, data.header.background)
}
default:
EmptyView()
}
}
}
}
Код: Выделить всё
struct Badge: SwiftUI.View {
struct Model: ComponentModelType {
let id: String = "\(UUID())"
let label: MyText.Model
let background: Background
}
let model: Model
var body: some SwiftUI.View {
MyText(model: model.label)
.environment(\.backgroundType, model.background)
}
}
struct MyText: View {
struct Model: ComponentModelType {
let id: String = "\(UUID())"
let content: String
let color: MyTextColor?
}
let model: Model
@Environment(\.backgroundType) var backgroundType
var body: some View {
Label(model.content)
.textColor(model.color ?? textColor())
.fixedSize(horizontal: false, vertical: true)
.multilineTextAlignment(.leading)
}
private func textColor() -> MyTextColor {
switch backgroundType {
case .one:
return .primary
case .two:
return .secondary
default:
return .primaryInverse
}
}
}
Кажется, я не могу понять, в чем может быть проблема!
Что я делаю не так?
Подробнее здесь: https://stackoverflow.com/questions/786 ... child-view
Мобильная версия