Classes/TheElementsAppDelegate.m
/* |
Copyright (C) 2015 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
Application delegate that sets up the application. |
*/ |
#import "TheElementsAppDelegate.h" |
#import "ElementsTableViewController.h" |
// each data source responsible for backing our 4 varying table view controllers |
#import "ElementsSortedByNameDataSource.h" |
#import "ElementsSortedByAtomicNumberDataSource.h" |
#import "ElementsSortedBySymbolDataSource.h" |
#import "ElementsSortedByStateDataSource.h" |
@implementation TheElementsAppDelegate |
@synthesize window; |
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { |
// for each tableview 'screen' we need to create a datasource instance |
// (the class that is passed in) we then need to create an instance of |
// ElementsTableViewController with that datasource instance finally we need to return |
// a UINaviationController for each screen, with the ElementsTableViewController as the |
// root view controller. |
// |
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; |
// the class type for the datasource is not crucial, but that it implements the |
// ElementsDataSource protocol and the UITableViewDataSource Protocol |
// |
id<ElementsDataSource, UITableViewDataSource> dataSource; |
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; |
NSMutableArray *viewControllers = [NSMutableArray arrayWithCapacity:4]; |
// create our tabbar view controllers, since we already have one defined in our storyboard |
// we will create 3 more instances of it, and assign each it's own kind data source |
// by name |
UINavigationController *navController = [storyboard instantiateViewControllerWithIdentifier:@"navForTableView"]; |
ElementsTableViewController *viewController = |
(ElementsTableViewController *)[navController topViewController]; |
dataSource = [[ElementsSortedByNameDataSource alloc] init]; |
viewController.dataSource = dataSource; |
[viewControllers addObject:navController]; |
// by atomic number |
navController = [storyboard instantiateViewControllerWithIdentifier:@"navForTableView"]; |
viewController = (ElementsTableViewController *)[navController topViewController]; |
dataSource = [[ElementsSortedByAtomicNumberDataSource alloc] init]; |
viewController.dataSource = dataSource; |
[viewControllers addObject:navController]; |
// by symbol |
navController = [storyboard instantiateViewControllerWithIdentifier:@"navForTableView"]; |
viewController = (ElementsTableViewController *)[navController topViewController]; |
dataSource = [[ElementsSortedBySymbolDataSource alloc] init]; |
viewController.dataSource = dataSource; |
[viewControllers addObject:navController]; |
// by state |
navController = [storyboard instantiateViewControllerWithIdentifier:@"navForTableView"]; |
viewController = (ElementsTableViewController *)[navController topViewController]; |
dataSource = [[ElementsSortedByStateDataSource alloc] init]; |
viewController.dataSource = dataSource; |
[viewControllers addObject:navController]; |
tabBarController.viewControllers = viewControllers; |
return YES; |
} |
@end |
Copyright © 2015 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2015-08-25