首页 > 解决方案 > SwiftUI 在搜索结果中突出显示单词

问题描述

我有一个搜索视图,用户可以在其中按单词或短语搜索并过滤结果。

        List {
            ForEach(textsData) {text in
                if text.sometext.localizedCaseInsensitiveContains(self.searchText) || self.searchText == "" {
                    NavigationLink(destination: TextView(text: text)) {
                        Text(text.sometext)
                    }
                }
                
            }
        }

我想用红色突出显示搜索到的文本。有什么办法可以做到吗?

UPD:假设代码如下:

struct ContentView: View {
    
    var texts = ["This is an example of large text block", "This block is rather small"]
    
    var textsSearch = "large"
    
    var body: some View {
        List {
            ForEach(self.texts, id: \.self) {text in
                Text(text).padding().background(self.textsSearch == text ? Color.red : .clear)
            }
        }
    }
}

我只想在输出中突出显示“大”这个词:

这是一个文本块的例子

这个块相当小

UPD2:这个答案对我很有用:SwiftUI:是否存在修饰符来突出显示 Text() 视图的子字符串?

标签: swiftuiuisearchbar

解决方案


这应该有效。您通常可以将条件直接添加到修饰符中:

struct ContentView: View {
    
    var texts = ["a", "b"]
    
    var textsSearch = "a"
    
    var body: some View {
        List {
            ForEach(self.texts, id: \.self) {text in
                Text(text).padding().background(self.textsSearch == text ? Color.red : .clear)
            }
        }
    }
}


推荐阅读