swiftui - 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() 视图的子字符串?
解决方案
这应该有效。您通常可以将条件直接添加到修饰符中:
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)
}
}
}
}
推荐阅读
- javascript - 如何从按钮的 Onclick 中删除 EJS 中的数组项?
- boost - Boost graph clear_out_edges 参数不匹配
- search-engine - 如果 If-Modified-Since 为 false,为什么我会获取数据
- bash - Bash Heredoc 格式在 ) 末尾添加新行;
- python - Google API 按 ID 搜索文件夹
- system-verilog - 在系统verilog中的for循环内fork join
- java - 如何在 build.xml 中为 java 中的特定测试类添加 VM 选项?
- python - 如何添加通过终端创建的环境
- javascript - 对象的 SOAP 文本值
- uri - REST URI - 使用 ID 数组获取资源批次