UITableView не сохраняет выбранную строку при возврате

У меня есть несколько табличных представлений в моем приложении. Мне знакомо обычное поведение таблиц: когда вы выбираете строку и переходите к перемещенному представлению, она становится синей, затем, когда вы возвращаетесь, она остается синей на долю секунды, а затем исчезает до белого, чтобы уведомить пользователя строки, которая была только что выбрана.

Это работало отлично до недавнего времени, когда я заметил, что он больше не выполняет последнюю часть того, что я описал: он не оставался синим в течение этой доли секунды ...

У меня нет идея почему, но после прочтения нескольких связанных сообщений на этом сайте я понял, что вызываемый фрагмент кода находится в методе "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];
 }
9
задан Sonypop 11 July 2011 в 11:39
поделиться