/samples/MapTestbed/Classes/RootViewController.m
http://github.com/route-me/route-me · Objective C · 113 lines · 74 code · 27 blank · 12 comment · 5 complexity · 33a9137bfd885615abed283299d83492 MD5 · raw file
- //
- // RootViewController.m
- // MapTestbed : Diagnostic map
- //
- #import "RootViewController.h"
- #import "MainViewController.h"
- #import "FlipsideViewController.h"
- @implementation RootViewController
- @synthesize infoButton;
- @synthesize flipsideNavigationBar;
- @synthesize mainViewController;
- @synthesize flipsideViewController;
- - (void)viewDidLoad {
-
- [super viewDidLoad];
- MainViewController *viewController = [[MainViewController alloc] initWithNibName:@"MainView" bundle:nil];
- self.mainViewController = viewController;
- [viewController release];
-
- [self.view insertSubview:mainViewController.view belowSubview:infoButton];
- }
- - (void)loadFlipsideViewController {
-
- FlipsideViewController *viewController = [[FlipsideViewController alloc] initWithNibName:@"FlipsideView" bundle:nil];
- self.flipsideViewController = viewController;
- [viewController release];
-
- // Set up the navigation bar
- UINavigationBar *aNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
- aNavigationBar.barStyle = UIBarStyleBlackOpaque;
- self.flipsideNavigationBar = aNavigationBar;
- [aNavigationBar release];
-
- UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(toggleView)];
- UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"MapTestbed"];
- navigationItem.rightBarButtonItem = buttonItem;
- [flipsideNavigationBar pushNavigationItem:navigationItem animated:NO];
- [navigationItem release];
- [buttonItem release];
- }
- - (IBAction)toggleView {
- /*
- This method is called when the info or Done button is pressed.
- It flips the displayed view from the main view to the flipside view and vice-versa.
- */
- if (flipsideViewController == nil) {
- [self loadFlipsideViewController];
- }
-
- UIView *mainView = mainViewController.view;
- UIView *flipsideView = flipsideViewController.view;
-
- [UIView beginAnimations:nil context:NULL];
- [UIView setAnimationDuration:1];
- [UIView setAnimationTransition:([mainView superview] ? UIViewAnimationTransitionFlipFromRight : UIViewAnimationTransitionFlipFromLeft) forView:self.view cache:YES];
-
- if ([mainView superview] != nil) {
- [flipsideViewController viewWillAppear:YES];
- [mainViewController viewWillDisappear:YES];
- [mainView removeFromSuperview];
- [infoButton removeFromSuperview];
- [self.view addSubview:flipsideView];
- [self.view insertSubview:flipsideNavigationBar aboveSubview:flipsideView];
- [mainViewController viewDidDisappear:YES];
- [flipsideViewController viewDidAppear:YES];
- } else {
- [mainViewController viewWillAppear:YES];
- [flipsideViewController viewWillDisappear:YES];
- [flipsideView removeFromSuperview];
- [flipsideNavigationBar removeFromSuperview];
- [self.view addSubview:mainView];
- [self.view insertSubview:infoButton aboveSubview:mainViewController.view];
- [flipsideViewController viewDidDisappear:YES];
- [mainViewController viewDidAppear:YES];
- }
- [UIView commitAnimations];
- }
- // Override to allow orientations other than the default portrait orientation.
- - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
- // Return YES for supported orientations
- return YES;
- }
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
- // Release anything that's not essential, such as cached data
- }
- - (void)dealloc {
- [infoButton release];
- [flipsideNavigationBar release];
- [mainViewController release];
- [flipsideViewController release];
- [super dealloc];
- }
- @end