【发布时间】:2021-05-23 11:28:36
【问题描述】:
我正在尝试在 Swift 中使用 Xcode 12 制作应用程序。现在,我列出了一个带有功能搜索栏的字符串数组。我想将这些字符串变成按钮,以便用户可以选择一个并将它们带到应用程序的下一页。到目前为止,这是我的代码:
@State var searchText = ""
@State var isSearching = false
let languages = ["Arabic", "Chinese", "Dutch", "English", "French", "German", "Greek", "Hawaiian", "Hebrew", "Japanese", "Korean", "Polish", "Russian", "Spanish", "Italian"]
var body: some View {
NavigationView {
ScrollView {
HStack {
HStack {
TextField("Search", text: $searchText).ignoresSafeArea()
.padding(.leading, 30)
}
.padding(10)
.background(Color(.systemGray5))
.cornerRadius(20)
.padding(.horizontal, 10)
.onTapGesture (perform: {
isSearching = true
})
.overlay(
HStack {
Image(systemName: "magnifyingglass")
Spacer()
}.padding(.horizontal, 28)
.foregroundColor(.gray)
).transition(.move(edge: .trailing))
.animation(.easeIn)
if isSearching {
Button(action: {
isSearching = false
searchText = ""
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}, label: {
Text("Cancel")
.padding(.trailing)
.padding(.leading, -12)
})
.transition(.move(edge: .trailing))
.animation(.easeIn)
}
}
//ForEach(self.languages, id: \.self) { language in
ForEach(self.languages.filter {
self.searchText.isEmpty ? true : $0.contains(self.searchText)
}, id: \.self) { language in
HStack{
Text(language)
Spacer()
}.padding()
Divider()
.background(Color(.systemGray4))
.padding(.leading)
}
}
.navigationTitle("Language")
}
}
}
【问题讨论】:
标签: arrays swift xcode button swiftui