У меня есть несколько видов таблиц в моем приложении.Я знаком с обычным поведением таблиц: когда вы выбираете строку и переходите к нажатому виду, он становится синим, затем, когда вы возвращаетесь назад, он остается синим в течение доли секунды, а затем становится белым, чтобы уведомить пользователя.из того, какой ряд был только что выбран.
Это прекрасно работало до недавнего времени, когда я заметил, что больше не делал последний бит из того, что я описал: он не оставался синим в течение этой доли секунды ...
Понятия не имею, почему, но после прочтения нескольких похожих постов на этом сайте я понял, что вызываемый фрагмент кода находится в методе 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];
}