ios - 通过在 FirstViewController 中输入城市名称来更改 UITableView 数据

标签 ios swift uitableview swift3 datasource

我使用 Swift 3 我的第一个 ViewController 中有一个 textfield,当我输入城市名称时,我希望它在 tableView 中打开该城市的药店

示例:当我在 textField 中输入 New York 并按回车键时,它将转到 TableViewController 并给出纽约的药房列表:


纽约药房 1

纽约药房 2

纽约药房 3


当我返回并在 textField 中键入加利福尼亚并按回车键时,它将转到相同的 TableViewController 并提供加利福尼亚州的药店列表:

加州药房 1

加州药房 2

加州药房 3


我用两个不同的 TableViewControllers 做了,但我想用一个 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 })
}}

请注意,上面当前编码的此选项仍需要进一步工作,如果文本字段不包含位置,则不会有结果,您可以通过更改过滤器来解决此问题,也许像这样...

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/

相关文章:

ios - 核心数据后台插入大数据

uitableview - 为什么我会遇到 tableView 定义冲突?

iphone - UITableView 和 numberOfRowsInSection 崩溃

ios - 使用 Alamofire (Swift 2) 从 JSON 填充表格 View 单元格

ios - 使用类作为静态 AVAudioPlayer 的 AVAudioPlayerDelegate

ios - 位于 cellAtIndexPath 中的查询

ios - 如何退出 SWRevealViewController?

ios - 使用 UICollectionViewFlowLayout/UICollectionViewLayout 子类,不会在正确的时间调用 CellForItemAtIndexPath

iphone - iOS 检测拖动停止

ios - 如何使用带有 Xcode 7.1.1 的 iOS 9 创建 LaunchImage?