2010-08-05 2 views
0

Je montre un contrôleur de vue modale et à partir de là, j'utilise des boutons pour ajouter des sous-vues. Je dois ajouter d'autres contrôleurs de vue en tant que sous-vues, puis supprimer celui qui se trouve derrière. Puis-je référencer les vues par leur index?puis-je référencer une sous-vue par son index?

Exemple pratique: utilisateur voit la page 1 (Le contrôleur de vue racine) utilisateur appuie sur le bouton qui ajoute une sous-vue, la page 2. utilisateur appuie sur un autre bouton qui ajoute une sous-vue, la page 3. Maintenant, je dois enlever la page 2 afin de ne pas consommer de mémoire et d'avoir des choses qui se passent là-bas.

Ce n'est pas aussi simple que de le supprimer par son nom, car mon contrôleur de vue racine possède des boutons et des boutons suivant/précédent pour des vues spécifiques. Je peux toujours insérer la bonne sous-vue "suivante", mais celle à supprimer pourrait être l'une d'entre elles. L'utilisateur peut être sur la page 2, 3, 4 etc et passer à la page 5. Dans l'action du bouton pour la page 5, je peux bien sûr ajouter le contrôleur de vue page 5 comme sous-vue, mais comment le supprimer? quand il pourrait être l'un d'entre eux?

Répondre

1

Je pense que cela pourrait être résolu avec une bonne utilisation de UINavigationController; cependant, vous pouvez toujours utiliser [rootViewController.subviews objectAtIndex:subViewIndex];

0

Vous pouvez utiliser

[[parentView subviews] objectAtIndex:n]; 

Mais l'acheteur méfiez-vous, il est dangereux de faire des hypothèses sur l'endroit où les choses apparaissent dans ce tableau. Si vous ne pouvez pas trouver une meilleure façon d'atteindre votre objectif, vous devez au moins faire une sorte de vérification de type (isKindOfClass) pour vous assurer que ce qui est à cet index est réellement ce que vous vouliez faire.

0

Racine View = A; Deuxième vue = B; Troisième vue = C;

vous voulez naviguer A -> B -> C - (retour)> A correct? Comme vous allez de B à C, il suffit de cliquer sur le contrôleur de la racine à A, puis appuyez sur C, B n'est pas dans le mixage.

Cela ne fonctionnera que si vous utilisez un UINavigationController, mais vous pouvez utiliser la même idée pour votre problème.

- Pour Modal: -

// Viewing B, going to go to C: 
[self dismissModalViewControllerAnimated:NO]; // B is gone. 
[self presentModalViewController:C animated:YES]; // C animates up 
Questions connexes