diff -r 4e2813713358 -r 52f0482b043f cocoaTouch/MasterViewController.m --- a/cocoaTouch/MasterViewController.m Tue Apr 06 21:54:46 2010 +0000 +++ b/cocoaTouch/MasterViewController.m Wed Apr 07 01:22:05 2010 +0000 @@ -12,23 +12,24 @@ #import "TeamSettingsViewController.h" @implementation MasterViewController -@synthesize detailViewController, optionList, controllers; +@synthesize detailViewController, optionList, controllers, lastIndexPath; #pragma mark - #pragma mark View lifecycle - - - (void)viewDidLoad { [super viewDidLoad]; + + // the list of selectable controllers optionList = [[NSArray alloc] initWithObjects:NSLocalizedString(@"General",@""), NSLocalizedString(@"Teams",@""), NSLocalizedString(@"Weapons",@""), NSLocalizedString(@"Schemes",@""), nil]; + // the "Done" button on top left self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:0 target:self action:@selector(dismissSplitView)]; - + // list of allocated viewcontrollers (same in DetailViewController) NSMutableArray *array= [[NSMutableArray alloc] init]; GeneralSettingsViewController *generalSettingsViewController = [[GeneralSettingsViewController alloc] @@ -47,10 +48,6 @@ self.controllers = array; [array release]; - // Uncomment the following line to preserve selection between presentations. - //self.clearsSelectionOnViewWillAppear = NO; - // Uncomment the following line to display an Edit button in the navigation bar for this view controller. - //self.navigationItem.rightBarButtonItem = self.editButtonItem; } -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -115,12 +112,18 @@ #pragma mark - #pragma mark Table view delegate -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + int newRow = [indexPath row]; + int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : 0; - [detailViewController.navigationController popToRootViewControllerAnimated:NO]; - - NSInteger row = [indexPath row]; - UITableViewController *nextController = [self.controllers objectAtIndex:row]; - [detailViewController.navigationController pushViewController:nextController animated:YES]; + if (newRow != oldRow) { + [detailViewController.navigationController popToRootViewControllerAnimated:NO]; + + UITableViewController *nextController = [self.controllers objectAtIndex:[indexPath row]]; + [detailViewController.navigationController pushViewController:nextController animated:YES]; + self.lastIndexPath = indexPath; + [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; + } + [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; } @@ -129,7 +132,6 @@ -(void) didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; - // Relinquish ownership any cached data, images, etc that aren't in use. }