i love uikit

added a uikit toggel in trietestingview
i think i figured out the uikit refreshing issue 🔥
This commit is contained in:
neon443
2025-11-03 20:58:10 +00:00
parent 4c9cd6c8e6
commit 05d3d22a09
2 changed files with 21 additions and 11 deletions

View File

@@ -12,6 +12,7 @@ import Haptics
struct EmojiCollectionView: UIViewRepresentable { struct EmojiCollectionView: UIViewRepresentable {
let hoarder: EmojiHoarder let hoarder: EmojiHoarder
let items: [String]
func makeUIView(context: Context) -> UITableView { func makeUIView(context: Context) -> UITableView {
let tableView = UITableView() let tableView = UITableView()
@@ -21,31 +22,30 @@ struct EmojiCollectionView: UIViewRepresentable {
} }
func updateUIView(_ uiView: UITableView, context: Context) { func updateUIView(_ uiView: UITableView, context: Context) {
context.coordinator.hoarder = hoarder
context.coordinator.items = items
uiView.reloadData() uiView.reloadData()
} }
func makeCoordinator() -> Coordinator { func makeCoordinator() -> Coordinator {
Coordinator(hoarder: hoarder) Coordinator(hoarder: hoarder, items: items)
} }
final class Coordinator: NSObject, UITableViewDataSource { final class Coordinator: NSObject, UITableViewDataSource {
var hoarder: EmojiHoarder var hoarder: EmojiHoarder
var items: [String]
init(hoarder: EmojiHoarder) { init(hoarder: EmojiHoarder, items: [String]) {
self.hoarder = hoarder self.hoarder = hoarder
self.items = items
} }
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return hoarder.searchTerm.isEmpty ? hoarder.emojis.count : hoarder.filteredEmojis.count return items.count
} }
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var emojiName: String let emojiName = items[indexPath.row]
if hoarder.searchTerm.isEmpty {
emojiName = hoarder.emojis[indexPath.row].name
} else {
emojiName = hoarder.filteredEmojis[indexPath.row]
}
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.contentConfiguration = UIHostingConfiguration { cell.contentConfiguration = UIHostingConfiguration {

View File

@@ -20,8 +20,13 @@ struct TrieTestingView: View {
@State var filterTerm: String = "" @State var filterTerm: String = ""
@State var filterResult: [String] = [] @State var filterResult: [String] = []
@State var uikit: Bool = false
var body: some View { var body: some View {
VStack { VStack {
Toggle("uikit!!", isOn: $uikit)
.foregroundStyle(.blue)
Button("reset", role: .destructive) { Button("reset", role: .destructive) {
hoarder.trie.root = TrieNode() hoarder.trie.root = TrieNode()
} }
@@ -51,9 +56,14 @@ struct TrieTestingView: View {
Text("\(filterResult.count)") Text("\(filterResult.count)")
.modifier(numericTextCompat()) .modifier(numericTextCompat())
if uikit {
EmojiCollectionView(hoarder: hoarder, items: filterResult)
.id(filterResult)
} else {
List(filterResult, id: \.self) { item in List(filterResult, id: \.self) { item in
EmojiRow(hoarder: hoarder, emoji: hoarder.trie.dict[item]!) EmojiRow(hoarder: hoarder, emoji: hoarder.trie.dict[item]!)
} }
}
Text("\(hoarder.trie.root.children.count)") Text("\(hoarder.trie.root.children.count)")
} }