【问题标题】:SwiftUI Search bar feature searching through an array of structsSwiftUI 搜索栏功能通过结构数组进行搜索
【发布时间】:2020-03-19 03:09:43
【问题描述】:

我想在列表视图上实现搜索栏功能,下面是我当前的代码:

Section(header: SearchBar(text: self.$searchQuery)) {

            List(fetcher.user) { user in

                HStack() {

                    Text(user.name)

                }

            }

        }

用户被声明为@Published var user = [User]()

如何实现搜索功能?我看过一些视频,但它们的用例比我的要简单得多,因为我试图通过结构数组执行搜索。

【问题讨论】:

标签: search swiftui


【解决方案1】:

我会使用ObservableObject 来执行搜索逻辑:

class SearchHandler: ObservableObject {
    var searchText: String = "" {
        didSet {
            search()
        }
    }

    // Your array, replace String with your type
    @Published var resultObjs: [String] = []

    // Your initial array, replace String with your type
    var allObjs: [String]

    init(allObjs: [String]) {
        self.allObjs = allObjs
    }

    func search() {
        // Write all your searching code here

        // Use the searchText variable to filter out object
        // from allObjs and write them into resultObjs
    }
}

这是一个可以将值发布到侦听器的类,在这种情况下,它将是您的 SwiftUI 视图。

那么你可以这样使用它:

struct ContentView: View {
    // Replace the empty array with your initial data
    @ObservedObject var searchHandler = SearchHandler(allObj: [])

    var body: some View {
        Section(header: SearchBar(text: self.$searchHandler.searchText)) {
            List(self.$searchHandler.$resultObj) { user in
                HStack() {
                    Text(user.name)
                }
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2015-06-25
    • 1970-01-01
    • 2023-01-19
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多