Skip to content

Commit af30426

Browse files
committed
Add search bar on select language for SUSI Skills
1 parent 500a0fb commit af30426

File tree

3 files changed

+113
-35
lines changed

3 files changed

+113
-35
lines changed

Susi/Controllers/SelectLanguageController/SelectLanguageViewController.swift

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,16 @@ import UIKit
1010
import Material
1111
import Reachability
1212

13-
class SelectLanguageViewController: UITableViewController {
13+
class SelectLanguageViewController: UIViewController {
1414

1515
let reachability = Reachability()!
1616

1717
var languageModel: [LanguageModel] = []
18+
var searchedlanguageModel: [LanguageModel] = []
1819

20+
@IBOutlet weak var searchBar: UISearchBar!
21+
@IBOutlet weak var tableView: UITableView!
22+
var isSearching = false
1923
lazy var backButton: IconButton = {
2024
let ib = IconButton()
2125
ib.image = Icon.cm.arrowBack
@@ -54,23 +58,48 @@ class SelectLanguageViewController: UITableViewController {
5458
navigationItem.leftViews = [backButton]
5559
tableView.separatorStyle = .none
5660
tableView.bounces = false
61+
tableView.delegate = self
62+
tableView.dataSource = self
63+
searchBar.delegate = self
5764
}
5865
}
59-
extension SelectLanguageViewController {
66+
extension SelectLanguageViewController: UISearchBarDelegate {
67+
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
68+
isSearching = false
69+
tableView.reloadData()
70+
}
71+
72+
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
73+
isSearching = true
74+
searchedlanguageModel = languageModel.filter({
75+
if let text = $0.languageName?.prefix(searchText
76+
.count) {
77+
return text.caseInsensitiveCompare(searchText) == .orderedSame
78+
}
79+
return false
80+
})
81+
tableView.reloadData()
82+
}
83+
84+
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
85+
view.endEditing(true)
86+
}
87+
}
88+
extension SelectLanguageViewController: UITableViewDelegate, UITableViewDataSource {
6089
//MARK: - TableView Methods
61-
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
62-
return languageModel.count
90+
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
91+
return isSearching ? searchedlanguageModel.count : languageModel.count
6392
}
6493

65-
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
94+
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
6695
let cell = UITableViewCell()
6796
cell.selectionStyle = .none
68-
cell.textLabel?.text = languageModel[indexPath.row].languageName
97+
cell.textLabel?.text = !isSearching ? languageModel[indexPath.row].languageName : searchedlanguageModel[indexPath.row].languageName
6998
return cell
7099
}
71100

72-
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
73-
let selectedLanguageModel = languageModel[indexPath.row]
101+
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
102+
let selectedLanguageModel = !isSearching ? languageModel[indexPath.row] : searchedlanguageModel[indexPath.row]
74103
languageSelection?(selectedLanguageModel)
75104
dismissController()
76105
}

Susi/Controllers/SkillListingViewController/SkillListingVCMethods.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,16 @@ extension SkillListingViewController {
2929
}
3030
//MARK: - Presents All Language VC
3131
@objc func getToAllLanguageVC() {
32-
let vc = SelectLanguageViewController()
32+
let vc = storyboard?.instantiateViewController(withIdentifier: String(describing: SelectLanguageViewController.self)) as? SelectLanguageViewController
3333
weak var weakSelf = self
34-
vc.languageSelection = {
34+
vc?.languageSelection = {
3535
languageModel in
3636
weakSelf?.count = 0
3737
weakSelf?.presentLangugage = languageModel
3838
weakSelf?.getAllGroups()
3939
weakSelf?.shouldAnimateIndicators(true)
4040
}
41-
let nvc = AppNavigationController(rootViewController: vc)
41+
let nvc = AppNavigationController(rootViewController: vc!)
4242
present(nvc, animated: true, completion: nil)
4343
}
4444

0 commit comments

Comments
 (0)