@@ -10,12 +10,16 @@ import UIKit
10
10
import Material
11
11
import Reachability
12
12
13
- class SelectLanguageViewController : UITableViewController {
13
+ class SelectLanguageViewController : UIViewController {
14
14
15
15
let reachability = Reachability ( ) !
16
16
17
17
var languageModel : [ LanguageModel ] = [ ]
18
+ var searchedlanguageModel : [ LanguageModel ] = [ ]
18
19
20
+ @IBOutlet weak var searchBar : UISearchBar !
21
+ @IBOutlet weak var tableView : UITableView !
22
+ var isSearching = false
19
23
lazy var backButton : IconButton = {
20
24
let ib = IconButton ( )
21
25
ib. image = Icon . cm. arrowBack
@@ -54,23 +58,48 @@ class SelectLanguageViewController: UITableViewController {
54
58
navigationItem. leftViews = [ backButton]
55
59
tableView. separatorStyle = . none
56
60
tableView. bounces = false
61
+ tableView. delegate = self
62
+ tableView. dataSource = self
63
+ searchBar. delegate = self
57
64
}
58
65
}
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 {
60
89
//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
63
92
}
64
93
65
- override func tableView( _ tableView: UITableView , cellForRowAt indexPath: IndexPath ) -> UITableViewCell {
94
+ func tableView( _ tableView: UITableView , cellForRowAt indexPath: IndexPath ) -> UITableViewCell {
66
95
let cell = UITableViewCell ( )
67
96
cell. selectionStyle = . none
68
- cell. textLabel? . text = languageModel [ indexPath. row] . languageName
97
+ cell. textLabel? . text = !isSearching ? languageModel [ indexPath . row ] . languageName : searchedlanguageModel [ indexPath. row] . languageName
69
98
return cell
70
99
}
71
100
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]
74
103
languageSelection ? ( selectedLanguageModel)
75
104
dismissController ( )
76
105
}
0 commit comments