Untitled
unknown
swift
10 months ago
1.5 kB
6
Indexable
struct ProfileView: View, Identifiable {
var id: String {
return name
}
let name: String
var body: some View {
return Text(name)
}
}
final class ProfileViewModel: ObservableObject {
@Published var filterText: String = ""
@Published var elements: [ProfileView] = []
var filteredElements: [ProfileView] {
return elements.filter { $0.name.contains(filterText) }
}
}
struct List2: View {
@ObservedObject var ugaBugaViewModel = ProfileViewModel()
var body: some View {
List {
ForEach(ugaBugaViewModel.filteredElements, content: { element in
return element
})
}
}
}
protocol Renderable {
associatedtype Render: View
func render() -> Render
}
struct RenderableProfile: Renderable, Identifiable {
var id: String {
return name
}
let name: String
func render() -> some View {
return Text(name)
}
}
final class RenderableViewModel: ObservableObject {
@Published var filterText: String = ""
@Published var elements: [RenderableProfile] = []
var filteredElements: [RenderableProfile] {
return elements.filter { $0.name.contains(filterText) }
}
}
struct List3: View {
@ObservedObject var ugaBugaViewModel = RenderableViewModel()
var body: some View {
List {
ForEach(ugaBugaViewModel.filteredElements, content: { element in
return element.render()
})
}
}
}Editor is loading...
Leave a Comment