2010-08-31 3 views
0

J'ai un contrôleur de navigation qui démarre en mode tableau. Chaque ligne pousse à un détail UIView. Je voudrais avoir un bouton "suivant" sur le détail UIView qui apparaîtrait la vue actuelle et ouvrir celui correspondant à la ligne suivante sur le UITableView parent en utilisant le même contrôleur de vue sans retourner à la TableView. Idéalement, il faudrait utiliser une animation diapositive ou flip.Push Next Detail UIView sans revenir au parent UITableView

Pensées?

Répondre

0

J'ai compris celui-ci. Fondamentalement, je charge la vue suivante et le pousse sur la pile de navigation, puis supprime la vue actuelle de la pile. C'est un peu un hack codant dur la référence d'objet, mais cela fonctionne et l'animation est belle.

Voici l'extrait de code:

0

je me suis dit celui-ci dehors. Fondamentalement, je charge la vue suivante et le pousse sur la pile de navigation, puis supprime la vue actuelle de la pile. C'est un peu un hack codant dur la référence d'objet, mais cela fonctionne et l'animation est belle.

Voici la clé extrait de code:

NSMutableArray *allControllers = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers]; 
     NSLog(@"Controller Count:%d", [allControllers count]); 
     NSInteger backCount = 2; 
     [allControllers removeObjectAtIndex:[allControllers count] - backCount]; 
     [self.navigationController setViewControllers:allControllers animated:NO]; 
     [allControllers release]; 



     [self.navigationController popViewControllerAnimated:YES]; 
0

La façon dont je le fais:

// Push the blog view, but don't add to the stack by popping first. 
[self.navigationController popViewControllerAnimated: NO]; 
[listViewController.navigationController pushViewController: detailViewController animated:YES]; 

Le listViewController dans le code est la vue parent avec la vue du tableau. Le detailViewController est celui que vous devez créer en premier, contenant les détails de l'élément suivant dans la liste.

Si vous voulez revenir en arrière, qui est dans la table, vous avez besoin d'un code légèrement différent:

// Fake a pop animation by pushing the controller, then pushing a dummy and popping back. 
DummyController* dummy = [DummyController alloc]; 
[self.navigationController popViewControllerAnimated: NO]; 
[lListViewController.navigationController pushViewController: detailViewController animated:NO]; 
[detailViewController.navigationController pushViewController:dummy animated:NO]; 
[dummy.navigationController popViewControllerAnimated:YES]; 

Cet anime bien les transitions de page.

Questions connexes