2009-02-04 5 views
1

J'ai un UINavigationController. Dans sa barre d'outils est un contrôle segmenté avec deux boutons. Chaque bouton se rapporte à son propre UITableViewController. Ce que j'essaie de réaliser est de câbler le contrôleur de navigation de sorte que les vues sont commutées selon le bouton dans le contrôle segmenté est actif. Je suppose que je devrais tenir sur les contrôleurs de table, parce que je veux conserver la position de défilement dans chaque vue, par exemple, si l'utilisateur était positionné en haut de la table 1, et le bas du tableau 2, alors cette les informations doivent être conservées lors de la commutation.Commutation entre deux UITableViewControllers dans un seul UINavigationController

Toutes les suggestions seraient les bienvenues!

Répondre

3

Serait-il possible de simplement changer la source de données au lieu de devoir traiter deux vues de table séparées? Vous pouvez tout aussi bien conserver la position de défilement et vous utilisez moins de mémoire (une vue de table et deux sources de données au lieu de deux vues de table et deux sources de données).

Avec seulement 128 Mo de mémoire disponible, l'efficacité de la mémoire est roi sur l'iPhone.

1

La suggestion de Joel est bonne. Une autre possibilité consiste à utiliser deux UITableViews différents dans votre contrôleur de vue et à les échanger manuellement. Il n'y a rien de spécial sur un UITableViewController; c'est juste un UIViewController avec son installation de tableView pour vous. Utilisez un UIViewController standard, ajoutez deux prises pour les tables, cachez-en une et échangez-les lorsque votre UISegmentedControl est basculé.

0

J'ai utilisé la méthode de Joel. Très efficace.

Utilisez le contrôle segmenté pour appeler une méthode qui définit une variable, puis envoie [tableView reloadData]. Puis le tableauView: numberOfRowsInSection: et tableView: cellForRowAtIndexPath: récupèrent leurs données en fonction de la valeur de la variable définie par la méthode de contrôle de votre segment.

Questions connexes