私は7つのカテゴリAll、A、B、C、D、E、Fを持つplistを作成しました。各カテゴリにはアイテムのリストがあります。今私はセグメント化されたコントロールを使用しようとしているので、ユーザーがAをクリックすると、テーブルビューのAカテゴリにリストされているすべての項目が表示されます。セグメント化されたコントロールを使用して、私のplistのすべてのカテゴリを表示するにはどうすればよいですか?
これまでのところ、このように私のコードの外観は記載されているアイテムを取得する:
override func viewDidLoad() {
super.viewDidLoad()
// Setup the Search Controller
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = "Search Summons"
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = false
definesPresentationContext = true
// Setup the Scope Bar
searchController.searchBar.scopeButtonTitles = ["All", "A", "B", "C", "D", "E", "F"]
searchController.searchBar.delegate = self
// Setup the search footer
tableView.tableFooterView = searchFooter
if let splitViewController = splitViewController {
let controllers = splitViewController.viewControllers
detailViewController = (controllers[controllers.count-1] as! UINavigationController).topViewController as? DetailViewController
}
//Load Plist File
let path = Bundle.main.path(forResource:"Summonses", ofType: "plist")
let dics = NSArray.init(contentsOf: URL.init(fileURLWithPath:path!)) as! [NSDictionary]
self.originalData = dics.map{Summonses.init(category: $0["category"] as! String, price: $0["price"] as! String, description: $0["description"] as! String, accusatory: $0["accusatory"] as! String, name: $0["name"] as! String, info: $0["info"] as! String)}
self.filteredData = self.originalData
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if isFiltering() {
searchFooter.setIsFilteringToShow(filteredItemCount: filteredData.count, of: originalData.count)
return filteredData.count
}
switch (Controller.selectedSegmentIndex){
case 0:
return filteredData.count
case 1:
//Not exactly sure what to put in this section to count for the items in category A
//return filteredData.category["A"].count <--- something like that
default:
break
}
それはそれをしないが、私はそれがセグメント化された制御で動作するように取得するように見えるカント私のスコープの検索バーのよう。 「All」、「A」、「B」、「C」、「D」、「E」、「F」の文字列が含まれており、ユーザがヒットAカテゴリーAのすべてのアイテムが表示されます。上に自分のコードにコメントをつけた私は、そのカテゴリにAを持つすべてのアイテムを数えるために、その場所に置くコードの種類はわかりません。
ok私は自宅でコードを調べましたが、実際にコード内のどこかでselectedsegmentindexを実装することはできませんでした。スコープバーを変更したような感じでした。 – Dkeem
selectedScopeButtonIndexDidChangeこのメソッドは、検索バーのセグメントコントロールのインデックスを与えます。詳細はdocを参照してください。 – Vinodh