@@ -16,6 +16,7 @@ final class ListViewController: UIViewController {
16
16
private lazy var searchController : UISearchController = {
17
17
let searchController = UISearchController ( searchResultsController: nil )
18
18
searchController. delegate = self
19
+ searchController. searchBar. delegate = self
19
20
searchController. searchResultsUpdater = self
20
21
searchController. searchBar. placeholder = " Type a GitHub user name "
21
22
searchController. hidesNavigationBarDuringPresentation = false
@@ -36,27 +37,15 @@ final class ListViewController: UIViewController {
36
37
super. viewDidLoad ( )
37
38
setupUI ( )
38
39
bindEvents ( )
39
- fetchList ( )
40
40
}
41
41
42
42
override func loadView( ) {
43
43
view = listView
44
44
}
45
-
46
- override func viewWillAppear( _ animated: Bool ) {
47
- super. viewWillAppear ( animated)
48
- navigationController? . navigationBar. prefersLargeTitles = true
49
- }
50
-
51
- override func viewWillDisappear( _ animated: Bool ) {
52
- super. viewWillDisappear ( animated)
53
- navigationController? . navigationBar. prefersLargeTitles = false
54
- }
55
-
45
+
56
46
// MARK: Actions
57
47
@objc
58
48
func pressedSettings( ) {
59
- debugPrint ( " Open Settings " )
60
49
let settingsViewController = SettingsViewController ( )
61
50
let navBarController = UINavigationController ( rootViewController: settingsViewController)
62
51
navBarController. navigationBar. backgroundColor = . systemGray5
@@ -76,34 +65,38 @@ final class ListViewController: UIViewController {
76
65
}
77
66
78
67
private func setupNavigationBar( ) {
68
+ navigationController? . navigationBar. prefersLargeTitles = true
69
+
79
70
let settingsButton = UIBarButtonItem ( title: " Settings " , style: . plain, target: self , action: #selector( pressedSettings) )
80
71
navigationItem. rightBarButtonItem = settingsButton
81
72
navigationItem. searchController = searchController
82
73
navigationItem. hidesSearchBarWhenScrolling = false
83
74
}
84
-
85
- private func fetchList( ) {
86
-
87
- self . service. fetchList ( for: " devpass-tech " ) { items in
88
-
89
- let names = items. map { $0. name }
75
+
76
+ private func fetchList( for user: String ) {
90
77
91
- let configuration = ListViewConfiguration ( listItems : names )
78
+ self . service . fetchList ( for : user ) { items in
92
79
80
+ let configuration = ListViewConfiguration ( repositories: items)
81
+
93
82
DispatchQueue . main. async {
94
83
self . listView. updateView ( with: configuration)
95
84
}
96
85
}
97
86
}
98
87
99
- private func instanceDetailsOf( _ item: String ) {
88
+ private func instanceDetailsOf( _ item: RepositoriesModel ) {
100
89
let viewController = DetailViewController ( )
101
- viewController. title = item
102
- navigationController? . pushViewController ( viewController, animated: false )
90
+ viewController. title = item. name
91
+ navigationController? . pushViewController ( viewController, animated: true )
103
92
}
104
93
}
105
94
106
95
// MARK: Extensions
107
- extension ListViewController : UISearchResultsUpdating , UISearchControllerDelegate {
96
+ extension ListViewController : UISearchResultsUpdating , UISearchControllerDelegate , UISearchBarDelegate {
108
97
func updateSearchResults( for searchController: UISearchController ) { }
98
+
99
+ func searchBarSearchButtonClicked( _ searchBar: UISearchBar ) {
100
+ fetchList ( for: searchController. searchBar. text ?? " " )
101
+ }
109
102
}
0 commit comments