我使用Swift 3
我的第一个ViewController中有一个文本字段,当我键入城市名称时,我希望它在tableView中打开该城市的药店
示例:当我在textField中键入New York并按enter键时,它将转到TableViewController并给出纽约的药店列表:
纽约药房1
纽约药房2
纽约药房3
当我返回并在textField中键入California并按enter时,它将转到同一个TableViewController,并将给出加利福尼亚的药店列表:
加州药房1
加州药房2
加州药房3
我用两个不同的TableViewController完成了这个任务,但是我想用一个TableViewController完成
我不知道怎么做,需要帮助
最佳答案
如前所述,有很多方法可以做到这一点,下面我提供的示例显示了不同位置的单个药房对象数组(来自结构)。然后具有计算属性,该属性是根据文本字段的内容筛选的列表。
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 })
}}
请注意,上面当前编码的这个选项仍然需要进一步的工作,如果textfield不包含位置,则不会有任何结果,您可以通过更改筛选器来解决这个问题,可能是这样的。。。
var filteredPharmacies: [Pharmacy] { get {
return self.locationTextField.isEmpty || self.pharmacies.filter({ $0.location == self.locationTextField.text })
}}
需要注意的主要事情是,您可以拥有一个源列表,只需根据您可能拥有的任何筛选器对其进行筛选,并将筛选后的数据用作tableView数据源。
关于ios - 通过在FirstViewController中输入城市名称来更改UITableView数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43518069/