У меня есть несколько табличных представлений в моем приложении. Мне знакомо обычное поведение таблиц: когда вы выбираете строку и переходите к перемещенному представлению, она становится синей, затем, когда вы возвращаетесь, она остается синей на долю секунды, а затем исчезает до белого, чтобы уведомить пользователя строки, которая была только что выбрана.
Это работало отлично до недавнего времени, когда я заметил, что он больше не выполняет последнюю часть того, что я описал: он не оставался синим в течение этой доли секунды ...
У меня нет идея почему, но после прочтения нескольких связанных сообщений на этом сайте я понял, что вызываемый фрагмент кода находится в методе "viewDidAppear". Что меня смущает, так это то, что я не переопределяю этот метод, но я тестировал его с помощью NSLog, чтобы показать мне путь индекса для строки, выделение которой следует отменить, которая вернула (null).
Так что это заставляет меня поверить что каким-то образом tableView преждевременно отменяет выбор строки.
Ниже мой метод didSelectRowForIndexPath:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"Selected row at index path: %@", indexPath);
//setting our view controller as what we want
TripDetails *detailViewController = [[TripDetails alloc] initWithNibName:@"TripDetails" bundle:nil];
self.tripsDetailViewController = detailViewController;
[detailViewController release];
// Pass the selected object to the new view controller.
NSLog(@"Passing trip...");
self.tripsDetailViewController.selectedTrip = [fetchedResultsController objectAtIndexPath:indexPath];
//Hide the bottom bar on pushed view
tripsDetailViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:tripsDetailViewController animated:YES];
}
Любая помощь приветствуется, спасибо :)
РЕДАКТИРОВАТЬ: Исправлено
У меня все заработало .... Кажется я вызывал метод [self.tableView reloadData] в моем методе viewWillAppear, который затем заставлял таблицу отменять выбор всех ячеек. Ниже мой модифицированный метод viewDidLoad. Спасибо за предложения!
- (void)viewWillAppear:(BOOL)animated
{
NSLog(@"running viewWIllAppear for TripsTable");
//Getting indexpath for highlighened cell, to rehighlight
NSIndexPath *selectedIndex = [self.tableView indexPathForSelectedRow];
//Refreshing Table - Implement an if statement on the condition that the data has changed
[self viewDidLoad];
[self.tableView reloadData];
//Re select cell
[self.tableView selectRowAtIndexPath:selectedIndex animated:NO scrollPosition:UITableViewScrollPositionNone];
[super viewWillAppear:animated];
}