13
13
#import " MRCNewsViewModel.h"
14
14
#import " MRCReposViewModel.h"
15
15
#import " MRCProfileViewModel.h"
16
- #import " MRCNavigationControllerStack.h"
17
16
#import " MRCReposViewController.h"
18
17
#import " MRCNavigationController.h"
19
18
#import " MRCSearchViewController.h"
20
19
#import " MRCUserListViewModel.h"
21
20
22
21
@interface MRCHomepageViewController () <UITabBarControllerDelegate>
23
22
24
- @property (nonatomic , strong , readonly ) MRCHomepageViewModel *viewModel;
25
-
26
- @property (nonatomic , strong ) MRCNewsViewController *newsViewController;
27
- @property (nonatomic , strong ) MRCReposViewController *reposViewController;
28
- @property (nonatomic , strong ) MRCSearchViewController *searchViewController;
29
- @property (nonatomic , strong ) MRCProfileViewController *profileViewController;
23
+ @property (nonatomic , strong ) MRCHomepageViewModel *viewModel;
30
24
31
25
@end
32
26
@@ -36,45 +30,55 @@ @implementation MRCHomepageViewController
36
30
37
31
- (void )viewDidLoad {
38
32
[super viewDidLoad ];
39
-
33
+
40
34
self.automaticallyAdjustsScrollViewInsets = NO ;
35
+
36
+ UINavigationController *newsNavigationController = ({
37
+ MRCNewsViewController *newsViewController = [[MRCNewsViewController alloc ] initWithViewModel: self .viewModel.newsViewModel];
38
+
39
+ UIImage *newsImage = [UIImage octicon_imageWithIdentifier: @" Rss" size: CGSizeMake (25 , 25 )];
40
+ newsViewController.tabBarItem = [[UITabBarItem alloc ] initWithTitle: @" News" image: newsImage tag: 1 ];
41
+
42
+ [[MRCNavigationController alloc ] initWithRootViewController: newsViewController];
43
+ });
41
44
42
- self.newsViewController = [[MRCNewsViewController alloc ] initWithViewModel: self .viewModel.newsViewModel];
43
- UIImage *newsImage = [UIImage octicon_imageWithIdentifier: @" Rss" size: CGSizeMake (25 , 25 )];
44
- self.newsViewController .tabBarItem = [[UITabBarItem alloc ] initWithTitle: @" News" image: newsImage tag: 1 ];
45
-
46
- self.reposViewController = [[MRCReposViewController alloc ] initWithViewModel: self .viewModel.reposViewModel];
47
- UIImage *reposImage = [UIImage octicon_imageWithIdentifier: @" Repo" size: CGSizeMake (25 , 25 )];
48
- self.reposViewController .tabBarItem = [[UITabBarItem alloc ] initWithTitle: @" Repositories" image: reposImage tag: 2 ];
49
-
50
- self.searchViewController = [[MRCSearchViewController alloc ] initWithViewModel: self .viewModel.searchViewModel];
51
- UIImage *searchImage = [UIImage octicon_imageWithIdentifier: @" Search" size: CGSizeMake (25 , 25 )];
52
- self.searchViewController .tabBarItem = [[UITabBarItem alloc ] initWithTitle: @" Search" image: searchImage tag: 3 ];
45
+ UINavigationController *reposNavigationController = ({
46
+ MRCReposViewController *reposViewController = [[MRCReposViewController alloc ] initWithViewModel: self .viewModel.reposViewModel];
47
+
48
+ UIImage *reposImage = [UIImage octicon_imageWithIdentifier: @" Repo" size: CGSizeMake (25 , 25 )];
49
+ reposViewController.tabBarItem = [[UITabBarItem alloc ] initWithTitle: @" Repositories" image: reposImage tag: 2 ];
50
+
51
+ [[MRCNavigationController alloc ] initWithRootViewController: reposViewController];
52
+ });
53
53
54
- UIImage *profileImage = [UIImage octicon_imageWithIdentifier: @" Person" size: CGSizeMake (25 , 25 )];
55
- self.profileViewController = [[MRCProfileViewController alloc ] initWithViewModel: self .viewModel.profileViewModel];
56
- self.profileViewController .tabBarItem = [[UITabBarItem alloc ] initWithTitle: @" Profile" image: profileImage tag: 4 ];
54
+ UINavigationController *searchNavigationController = ({
55
+ MRCSearchViewController *searchViewController = [[MRCSearchViewController alloc ] initWithViewModel: self .viewModel.searchViewModel];
56
+
57
+ UIImage *searchImage = [UIImage octicon_imageWithIdentifier: @" Search" size: CGSizeMake (25 , 25 )];
58
+ searchViewController.tabBarItem = [[UITabBarItem alloc ] initWithTitle: @" Search" image: searchImage tag: 3 ];
59
+
60
+ [[MRCNavigationController alloc ] initWithRootViewController: searchViewController];
61
+ });
57
62
58
- self.viewControllers = @[ self .newsViewController, self .reposViewController, self .searchViewController, self .profileViewController ];
63
+ UINavigationController *profileNavigationController = ({
64
+ MRCProfileViewController *profileViewController = [[MRCProfileViewController alloc ] initWithViewModel: self .viewModel.profileViewModel];
65
+
66
+ UIImage *profileImage = [UIImage octicon_imageWithIdentifier: @" Person" size: CGSizeMake (25 , 25 )];
67
+ profileViewController.tabBarItem = [[UITabBarItem alloc ] initWithTitle: @" Profile" image: profileImage tag: 4 ];
68
+
69
+ [[MRCNavigationController alloc ] initWithRootViewController: profileViewController];
70
+ });
71
+
72
+ self.viewControllers = @[ newsNavigationController, reposNavigationController, searchNavigationController, profileNavigationController ];
73
+
74
+ [MRCSharedAppDelegate.navigationControllerStack pushNavigationController: newsNavigationController];
59
75
60
- [[[ self
76
+ [[self
61
77
rac_signalForSelector: @selector (tabBarController:didSelectViewController: )
62
78
fromProtocol: @protocol (UITabBarControllerDelegate)]
63
- startWith: RACTuplePack (self , self .newsViewController)]
64
79
subscribeNext: ^(RACTuple *tuple) {
65
- RACTupleUnpack (UITabBarController *tabBarController, UIViewController *viewController) = tuple;
66
-
67
- tabBarController.navigationItem .title = [((MRCViewController *)viewController).viewModel title ];
68
-
69
- if (viewController.tabBarItem .tag == 1 ) {
70
- tabBarController.navigationItem .titleView = nil ;
71
- } else if (viewController.tabBarItem .tag == 2 ) {
72
- tabBarController.navigationItem .titleView = ((MRCReposViewController *)viewController).segmentedControl ;
73
- } else if (viewController.tabBarItem .tag == 3 ) {
74
- tabBarController.navigationItem .titleView = ((MRCSearchViewController *)viewController).searchController .searchBar ;
75
- } else if (viewController.tabBarItem .tag == 4 ) {
76
- tabBarController.navigationItem .titleView = nil ;
77
- }
80
+ [MRCSharedAppDelegate.navigationControllerStack popNavigationController ];
81
+ [MRCSharedAppDelegate.navigationControllerStack pushNavigationController: tuple.second];
78
82
}];
79
83
self.delegate = self;
80
84
}
0 commit comments