SwiftUI 搜索栏功能通过结构数组进行搜索

Posted

技术标签:

【中文标题】SwiftUI 搜索栏功能通过结构数组进行搜索【英文标题】:SwiftUI Search bar feature searching through an array of structs 【发布时间】: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]()

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

【问题讨论】:

如果您的意思是 standard SearchBar,那么主题 Does somebody have all ready implemented searchbar on tvos with 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)
                
            
        
    

【讨论】:

以上是关于SwiftUI 搜索栏功能通过结构数组进行搜索的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 关闭搜索栏

SwiftUI 搜索栏与导航栏一致

在 SwiftUI 中从数据模型中搜索数组

SwiftUI 搜索栏无法产生诊断错误

在 SwiftUI 中向 NavigationView 添加搜索栏

单击搜索栏时如何显示单独的视图? [SwiftUI] [关闭]