2010-02-27 4 views
0

Je viens de remplir mon UITableView avec des planètes. Je voudrais que chaque cellule clique pour s'ouvrir dans un nouveau Xib (si cela semble être la mauvaise approche s'il vous plaît diriger). Je peux faire fonctionner un secondviewcontroller, en faisant fonctionner le thirdviewcontroller et le fourthviewcontroller? Merci.UITableView avec plusieurs viewcontollers

+0

Pouvez-vous poster le code depuis votre tableView: didSelectRowAtIndexPath: méthode? Si vous pouvez faire fonctionner le second contrôleur de vue, alors le reste devrait fonctionner de la même manière. – chrissr

+0

Découvrez UINavigationController. C'est conçu pour ça. –

Répondre

1

Placez votre contrôleur principal (celui avec la table) à l'intérieur d'un contrôleur UINavigation. Ensuite, lorsque l'utilisateur sélectionne une ligne, poussez un nouveau contrôleur de vue sur celui-ci.

1

La fonction suivante vous aidera. Comme Ben Gottlieb l'a dit, votre contrôleur de vue principal devra être dans un UINavigationController. Vous devez implémenter la méthode delegate pour didSelectRowAtIndexPath et c'est ici que vous créez le nouveau contrôleur pour votre nouvelle vue et que vous le chargez.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
     YourViewController *controller = [[YourViewController alloc] initWithNibName:@"YourViewController"bundle:nil];   
     [[self navigationController] pushViewController:yourViewController animated:YES]; 
     [yourViewController release]; // don't leak memory 
     } 

En fonction du numéro de ligne, vous pouvez choisir la plume à charger.

+0

Merci Neilngils et Ben. Je joue avec et ajouté une déclaration IF, pas sûr si c'est la bonne approche, mais cela fonctionne. - (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) chemin_index { \t int RowCount = [ligne de chemin d'index]; \t if (RowCount == 0) {\t \t \t EarthViewController * earthViewController = [[EarthViewController alloc] initWithNibName: @ paquet "EarthViewController": nil]; \t \t [[auto navigationController] pushViewController: earthViewController animé: OUI]; \t \t [version earthViewController]; // ne fuit pas la mémoire } \t else if (RowCount == 1) {..... – Goods

Questions connexes