From 05d3d22a09559d30c01a0c4ce73a736870f15da1 Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:58:10 +0000 Subject: [PATCH] i love uikit added a uikit toggel in trietestingview i think i figured out the uikit refreshing issue :fire: --- StickerSlack/Emoji/EmojiCollectionView.swift | 18 +++++++++--------- StickerSlack/Emoji/TrieTestingView.swift | 14 ++++++++++++-- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/StickerSlack/Emoji/EmojiCollectionView.swift b/StickerSlack/Emoji/EmojiCollectionView.swift index a11671a..f7b9dbb 100644 --- a/StickerSlack/Emoji/EmojiCollectionView.swift +++ b/StickerSlack/Emoji/EmojiCollectionView.swift @@ -12,6 +12,7 @@ import Haptics struct EmojiCollectionView: UIViewRepresentable { let hoarder: EmojiHoarder + let items: [String] func makeUIView(context: Context) -> UITableView { let tableView = UITableView() @@ -21,31 +22,30 @@ struct EmojiCollectionView: UIViewRepresentable { } func updateUIView(_ uiView: UITableView, context: Context) { + context.coordinator.hoarder = hoarder + context.coordinator.items = items uiView.reloadData() } func makeCoordinator() -> Coordinator { - Coordinator(hoarder: hoarder) + Coordinator(hoarder: hoarder, items: items) } final class Coordinator: NSObject, UITableViewDataSource { var hoarder: EmojiHoarder + var items: [String] - init(hoarder: EmojiHoarder) { + init(hoarder: EmojiHoarder, items: [String]) { self.hoarder = hoarder + self.items = items } 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 { - var emojiName: String - if hoarder.searchTerm.isEmpty { - emojiName = hoarder.emojis[indexPath.row].name - } else { - emojiName = hoarder.filteredEmojis[indexPath.row] - } + let emojiName = items[indexPath.row] let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) cell.contentConfiguration = UIHostingConfiguration { diff --git a/StickerSlack/Emoji/TrieTestingView.swift b/StickerSlack/Emoji/TrieTestingView.swift index 27ac21b..0c0409d 100644 --- a/StickerSlack/Emoji/TrieTestingView.swift +++ b/StickerSlack/Emoji/TrieTestingView.swift @@ -20,8 +20,13 @@ struct TrieTestingView: View { @State var filterTerm: String = "" @State var filterResult: [String] = [] + @State var uikit: Bool = false + var body: some View { VStack { + Toggle("uikit!!", isOn: $uikit) + .foregroundStyle(.blue) + Button("reset", role: .destructive) { hoarder.trie.root = TrieNode() } @@ -51,8 +56,13 @@ struct TrieTestingView: View { Text("\(filterResult.count)") .modifier(numericTextCompat()) - List(filterResult, id: \.self) { item in - EmojiRow(hoarder: hoarder, emoji: hoarder.trie.dict[item]!) + if uikit { + EmojiCollectionView(hoarder: hoarder, items: filterResult) + .id(filterResult) + } else { + List(filterResult, id: \.self) { item in + EmojiRow(hoarder: hoarder, emoji: hoarder.trie.dict[item]!) + } } Text("\(hoarder.trie.root.children.count)")