SwiftUI中的条件可搜索表?

3phpmpom  于 2023-01-08  发布在  Swift
关注(0)|答案(1)|浏览(89)

我有以下视图,在我的应用程序中的多个不同位置使用:

var body: some View {
        Table(sortedResults, sortOrder: $sortOrder) {
            TableColumn("Key", value: \.key)
            TableColumn("Type", value: \.value.typeString)
            TableColumn("Value", value: \.value.valueString)
        }
        .searchable(text: $searchString, prompt: "Search for a Key")
        .textSelection(.enabled)
    }

然而,有时我不希望它是searchable(例如,当我知道我显示的列表很短时)。
有没有办法有条件地使Table可搜索?

zbsbpyhn

zbsbpyhn1#

您可以创建一个简单的ViewModifier

struct OptionalSearchableViewModifier: ViewModifier{
    let isSearchable: Bool
    @Binding var searchString: String
    
    func body(content: Content) -> some View {
        switch isSearchable{
        case true:
            content
                .searchable(text: $searchString, prompt: "Search for a Key")
        case false:
            content
        }
    }
}

然后更换

.searchable(text: $searchString, prompt: "Search for a Key")

.modifier(OptionalSearchableViewModifier(isSearchable: sortedResults.count >= 5, searchString: $searchString))

相关问题