cocoaTouch/SplitViewRootController.m
changeset 3490 016b3172b645
parent 3487 b1d00f1950c8
child 3513 f589230fa21b
equal deleted inserted replaced
3489:aedf289192f5 3490:016b3172b645
    20 
    20 
    21 -(void) didReceiveMemoryWarning {
    21 -(void) didReceiveMemoryWarning {
    22     // Releases the view if it doesn't have a superview.
    22     // Releases the view if it doesn't have a superview.
    23     [super didReceiveMemoryWarning];    
    23     [super didReceiveMemoryWarning];    
    24     // Release any cached data, images, etc that aren't in use.
    24     // Release any cached data, images, etc that aren't in use.
    25     detailViewController = nil;
    25     if (detailViewController.view.superview == nil)
       
    26         detailViewController = nil;
    26     MSG_MEMCLEAN();
    27     MSG_MEMCLEAN();
    27 }
    28 }
    28 
    29 
    29 // load the view programmatically; we need a splitViewController that handles a MasterViewController 
    30 // load the view programmatically; we need a splitViewController that handles a MasterViewController 
    30 // (which is just a UITableViewController) and a DetailViewController where we present options
    31 // (which is just a UITableViewController) and a DetailViewController where we present options
    31 -(void) viewDidLoad {
    32 -(void) viewDidLoad {
    32     detailViewController = [[DetailViewController alloc] initWithStyle:UITableViewStyleGrouped];
    33     detailViewController = [[DetailViewController alloc] initWithStyle:UITableViewStyleGrouped];
    33     UINavigationController *detailedNavController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
    34     UINavigationController *detailedNavController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
    34     [detailViewController release];
    35     [detailViewController release];
    35 
    36 
       
    37     CGRect rect = [[UIScreen mainScreen] bounds];
    36     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    38     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    37         self.view.frame = CGRectMake(0, 0, 1024, 768);
    39         self.view.frame = CGRectMake(0, 0, rect.size.height, rect.size.width);
    38     
    40         
    39     //id splitViewRootController;
       
    40     
       
    41     Class splitViewControllerClass = NSClassFromString(@"UISplitViewController");
    41     Class splitViewControllerClass = NSClassFromString(@"UISplitViewController");
    42     if (splitViewControllerClass) {
    42     if (splitViewControllerClass) {
    43 #ifdef __IPHONE_3_2
    43 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2
    44         UISplitViewController *splitViewRootController = [[UISplitViewController alloc] init];
    44         UISplitViewController *splitViewRootController = [[UISplitViewController alloc] init];
    45         //[[splitViewRootController view] setAutoresizingMask: UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];
    45         //splitViewRootController.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;        
       
    46         splitViewRootController.view.frame = CGRectMake(0, 0, rect.size.height, rect.size.width);
    46         
    47         
    47         splitViewRootController.view.frame = CGRectMake(0, 0, 1024, 768);
       
    48         MasterViewController *masterViewController = [[MasterViewController alloc] initWithStyle:UITableViewStylePlain];
    48         MasterViewController *masterViewController = [[MasterViewController alloc] initWithStyle:UITableViewStylePlain];
    49         
       
    50         UINavigationController *mainNavController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
    49         UINavigationController *mainNavController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
    51     
       
    52         masterViewController.detailViewController = detailViewController;        
       
    53         [masterViewController release];
    50         [masterViewController release];
    54 
    51 
       
    52         splitViewRootController.delegate = detailViewController;
       
    53         masterViewController.detailViewController = detailViewController;        
    55         splitViewRootController.viewControllers = [NSArray arrayWithObjects: mainNavController, detailedNavController, nil];
    54         splitViewRootController.viewControllers = [NSArray arrayWithObjects: mainNavController, detailedNavController, nil];
    56         [mainNavController release];
    55         [mainNavController release];
    57         [detailedNavController release];
    56         [detailedNavController release];
    58         
    57         
    59         splitViewRootController.delegate = detailViewController;
       
    60         [detailViewController release];
       
    61 
       
    62         // add view to main controller
    58         // add view to main controller
    63         [self.view addSubview:[splitViewRootController view]];
    59         [self.view addSubview:splitViewRootController.view];
    64 #endif
    60 #endif
    65     } else {
    61     } else {
    66         [self.view addSubview:detailedNavController.view];
    62         [self.view addSubview:detailedNavController.view];
    67     }
    63     }
    68 
    64 
    70 }
    66 }
    71          
    67          
    72 -(void) viewDidUnload {
    68 -(void) viewDidUnload {
    73     detailViewController = nil;
    69     detailViewController = nil;
    74     [super viewDidUnload];
    70     [super viewDidUnload];
       
    71     MSG_DIDUNLOAD();
    75 }
    72 }
    76 
    73 
    77 -(void) dealloc {
    74 -(void) dealloc {
    78     [detailViewController release];
    75     [detailViewController release];
    79     [super dealloc];
    76     [super dealloc];
       
    77 }
       
    78 -(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
       
    79     [detailViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    80 }
    80 }
    81 
    81 
    82 #pragma mark -
    82 #pragma mark -
    83 #pragma mark additional methods as we're using a UINavigationController programmatically
    83 #pragma mark additional methods as we're using a UINavigationController programmatically
    84 // see http://davidebenini.it/2009/01/03/viewwillappear-not-being-called-inside-a-uinavigationcontroller/
    84 // see http://davidebenini.it/2009/01/03/viewwillappear-not-being-called-inside-a-uinavigationcontroller/