Popping UINavigationController à un UITableView et l'affichage d'une autre rangée sélectionnée
Question
Je crée une application avec un UITableView
le premier élément de la pile de la UINavigationController
que ce soit dans. Faire une sélection sur la UITableView
va pousser la vue d'une « DetailedViewController
». Dans le DetailedViewController
, vous pouvez naviguer à travers les éléments que la vue de la table est remplie avec.
Quand sauter le DetailedViewController
, et en décalant la UITableView
, comment puis-je désactiver l'élément correspondant que j'ai navigué à travers le DetailedViewController
et l'afficher centré dans le UITableView
?
Un exemple que tout le monde peut voir serait l'application Mail. Lorsque vous êtes dans votre boîte de réception et de faire une sélection, vous appuyez sur un « DetailedViewController
». Là, vous pouvez naviguer à travers les éléments de population dans le UITableView
. Lorsque vous la pop DetailedViewController
, il désélectionne l'élément correspondant que vous regardiez dans le dernier DetailedViewController
.
La solution
Pour désélectionner la ligne sélectionnée, écrire la méthode de viewDidAppear:
de code suivant.
// Index path for selected row
NSIndexPath *selectedRow = [_tableView indexPathForSelectedRow];
// Deselet the row with animation
[_tableView deselectRowAtIndexPath:selectedRow animated:YES];
// Scroll the selected row to the center
[_tableView scrollToRowAtIndexPath:selectedRow
atScrollPosition:UITableViewScrollPositionMiddle
animated:YES];
Autres conseils
Selon la façon dont vous voulez que l'animation de regarder vous pouvez simplement désactiver votre ligne sélectionnée.
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
...
}