My application worked fine until iOS5.
I have a grouped table with two partitions. Each section has 1 selection, which is displayed using the UITableViewCellAccessoryCheckmark.
My app crashed on iOS5 when I try to determine if([lastIndexPath1 isEqual:indexPath])
UPDATED: All relevant code below:
lastIndexPath1 and lastIndexPath2 are both NSIndexPath objects that I declared in the header. Number 1 tracks the last indexPath in section 0, and number 2 tracks section 1.
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; //Initialize the array. listOfItems = [[NSMutableArray alloc] init]; NSArray *fontName = [NSArray arrayWithObjects:@"Baskerville", @"Palatino", @"Times New Roman", @"Verdana", nil]; NSDictionary *fontNameInDict = [NSDictionary dictionaryWithObject:fontName forKey:@"FontOptions"]; NSArray *fontSize = [NSArray arrayWithObjects:@"Der var engang", @"Der var engang", @"Der var engang", @"Der var engang", @"Der var engang", @"Der var engang", @"Der var engang", @"Der var engang", @"Der var engang", @"Der var engang", @"Der var engang", @"Der var engang", nil]; NSDictionary *fontSizeInDict = [NSDictionary dictionaryWithObject:fontSize forKey:@"FontOptions"]; [listOfItems addObject:fontNameInDict]; [listOfItems addObject:fontSizeInDict]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; //SET SKRIFTTYPE NSString *neverOpendFonts1 = [prefs objectForKey:@"neverOpendFonts1"]; if (![neverOpendFonts1 isEqualToString:@"1"]) { lastIndexPath1 = [NSIndexPath indexPathForRow:1 inSection:0]; UITableViewCell *newCell = [myTableView cellForRowAtIndexPath:lastIndexPath1]; newCell.accessoryType = UITableViewCellAccessoryCheckmark; NSString *lastIndexPathString1 = [NSString stringWithFormat:@"1"]; [prefs setObject:lastIndexPathString1 forKey:@"lastIndexPath1"]; NSString *fontName = [NSString stringWithFormat:@"Palatino"]; [prefs setObject:fontName forKey:@"fontName"]; neverOpendFonts1 = [NSString stringWithFormat:@"1"]; [prefs setObject:neverOpendFonts1 forKey:@"neverOpendFonts1"]; [prefs synchronize]; NSLog(@"Har aldrig vรฆret รฅbnet - font options"); } else { NSInteger row = [[prefs objectForKey:@"lastIndexPath1"] intValue]; NSLog(@"FONT ROW: %i", row); lastIndexPath1 = [NSIndexPath indexPathForRow:row inSection:0]; UITableViewCell *newCell = [myTableView cellForRowAtIndexPath:lastIndexPath1]; newCell.accessoryType = UITableViewCellAccessoryCheckmark; } //SET SKRIFT STรRRELSE NSString *neverOpendFonts2 = [prefs objectForKey:@"neverOpendFonts2"]; if (![neverOpendFonts2 isEqualToString:@"1"]) { if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { lastIndexPath2 = [NSIndexPath indexPathForRow:2 inSection:1]; UITableViewCell *newCell2 = [myTableView cellForRowAtIndexPath:lastIndexPath2]; newCell2.accessoryType = UITableViewCellAccessoryCheckmark; NSString *lastIndexPathString2 = [NSString stringWithFormat:@"2"]; [prefs setObject:lastIndexPathString2 forKey:@"lastIndexPath2"]; NSString *fontSize = [NSString stringWithFormat:@"24.0"]; [prefs setObject:fontSize forKey:@"fontSize"]; neverOpendFonts2 = [NSString stringWithFormat:@"1"]; [prefs setObject:neverOpendFonts2 forKey:@"neverOpendFonts2"]; [prefs synchronize]; } else { lastIndexPath2 = [NSIndexPath indexPathForRow:0 inSection:1]; UITableViewCell *newCell3 = [myTableView cellForRowAtIndexPath:lastIndexPath2]; newCell3.accessoryType = UITableViewCellAccessoryCheckmark; NSString *lastIndexPathString2 = [NSString stringWithFormat:@"0"]; [prefs setObject:lastIndexPathString2 forKey:@"lastIndexPath2"]; NSString *fontSize = [NSString stringWithFormat:@"16.0"]; [prefs setObject:fontSize forKey:@"fontSize"]; neverOpendFonts2 = [NSString stringWithFormat:@"1"]; [prefs setObject:neverOpendFonts2 forKey:@"neverOpendFonts2"]; [prefs synchronize]; } } else { NSInteger row2 = [[prefs objectForKey:@"lastIndexPath2"] intValue]; NSLog(@"FONTSIZE ROW: %i", row2); lastIndexPath2 = [NSIndexPath indexPathForRow:row2 inSection:1]; UITableViewCell *newCell2 = [myTableView cellForRowAtIndexPath:lastIndexPath2]; newCell2.accessoryType = UITableViewCellAccessoryCheckmark; } [myTableView reloadData]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { //Number of rows it should expect should be based on the section NSDictionary *dictionary = [listOfItems objectAtIndex:section]; NSArray *array = [dictionary objectForKey:@"FontOptions"]; return [array count]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [listOfItems count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { // cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } // Set up the cell... //First get the dictionary object NSDictionary *dictionary = [listOfItems objectAtIndex:indexPath.section]; NSArray *array = [dictionary objectForKey:@"FontOptions"]; NSString *cellValue = [array objectAtIndex:indexPath.row]; cell.textLabel.text = cellValue; if (indexPath.section == 0) { if([lastIndexPath1 isEqual:indexPath]) { cell.accessoryType = UITableViewCellAccessoryCheckmark; } else { cell.accessoryType = UITableViewCellAccessoryNone; } switch (indexPath.row) { case 0: { cell.textLabel.font = [UIFont fontWithName:@"Baskerville" size:24]; } break; case 1: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:24]; } break; case 2: { cell.textLabel.font = [UIFont fontWithName:@"Times New Roman" size:24]; } break; case 3: { cell.textLabel.font = [UIFont fontWithName:@"Verdana" size:24]; } break; } } if (indexPath.section == 1) { if([lastIndexPath2 isEqual:indexPath]) { cell.accessoryType = UITableViewCellAccessoryCheckmark; } else { cell.accessoryType = UITableViewCellAccessoryNone; } switch (indexPath.row) { case 0: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:16]; } break; case 1: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:20]; } break; case 2: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:24]; } break; case 3: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:28]; } break; case 4: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:32]; } break; case 5: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:36]; } break; case 6: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:40]; } break; case 7: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:44]; } break; case 8: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:48]; } break; case 9: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:52]; } break; case 10: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:56]; } break; case 11: { cell.textLabel.font = [UIFont fontWithName:@"Palatino" size:60]; } break; } } return cell; }
Ccdev source share