我使用Swift 3 我的第一个 ViewController 中有一个 textfield ,当我输入城市名称时,我希望它在 tableView 中打开该城市的药房
示例:当我在 textField 中键入纽约并按Enter键时,它将转到 TableViewController ,并将提供纽约的药房列表:
纽约药房1
纽约药房2
纽约药房3
当我返回并在 textField 中输入加利福尼亚州并按回车键时,它会转到相同的 TableViewController ,并会给出加利福尼亚州的药房列表:
加州药房1
加州药房2
加州药房3
我用两个不同的 TableViewControllers 做到了但是我想在一个 TableViewController
中做到这一点我不知道怎么做,需要帮助
答案 0 :(得分:1)
如上所述,有许多方法可以做到这一点,我在下面提供的示例显示了不同位置的单个药房对象数组(来自结构)。然后具有计算属性,该属性是由文本字段的内容过滤的列表。
struct Pharmacy {
name: String
location: String
}
let pharmacies: [Pharmacy] = [
Pharmacy(name: "California Pharmacy 1", location: "California"),
Pharmacy(name: "California Pharmacy 2", location: "California"),
Pharmacy(name: "California Pharmacy 3", location: "California"),
Pharmacy(name: "New York Pharmacy 1", location: "New York"),
Pharmacy(name: "New York Pharmacy 2", location: "New York"),
Pharmacy(name: "New York Pharmacy 3", location: "New York")
]
var filteredPharmacies: [Pharmacy] { get {
return self.pharmacies.filter({ $0.location == self.locationTextField.text })
}}
请注意,上面当前编码的此选项仍需要进一步处理,如果文本字段不包含位置,则没有结果,您可以通过更改过滤器来解决此问题,也许就像这样......
var filteredPharmacies: [Pharmacy] { get {
return self.locationTextField.isEmpty || self.pharmacies.filter({ $0.location == self.locationTextField.text })
}}
要注意的主要事项是,您可以拥有一个源列表,只需根据您可能拥有的任何过滤器对其进行过滤,并将过滤后的数据用作tableView数据源。
答案 1 :(得分:1)
最后我发现了怎么做,这就是我的做法:
@IBAction func GoPressed(_ sender: Any) {
if textField.text == "New York" || textField.text == "new york" {
let arrayForNewYork = ["New York Pharmacy 1","New York Pharmacy 2","New York Pharmacy 3"]
performSegue(withIdentifier: "Go", sender: arrayForNewYork)
}else if textField.text == "California" || textField.text == "california" {
let arrayForCalifornia = ["California Pharmacy 1","California Pharmacy 2","California Pharmacy 3"]
performSegue(withIdentifier: "Go", sender: arrayForCalifornia)
}
感谢所有试图帮助我的人:)