1

Je rencontre un problème avec une table et affiche une autre vue lorsque l'utilisateur touche une cellule de tableau. J'utilise un UITabBarController pour la vue principale pour montrer différentes vues. J'utilise ensuite un UINavigationController lorsque l'utilisateur sélectionne une vue UITableView pour afficher la vue suivante à partir de la sélection de cellule de table.UINavigationController, UITableView et ne pas afficher la vue suivante

Mon problème est le suivant: lorsqu'ils sélectionnent la cellule de tableau, la cellule est mise en surbrillance et la vue suivante n'apparaît pas. J'utilise IB. Tous les exemples que j'ai trouvés le font de la même manière que moi, sauf que les exemples fonctionnent!

J'ai les contrôleurs chargés dans un NSMutableArray avec un dictionnaire. J'ai également essayé ce code en créant directement un contrôleur de vue plutôt que d'utiliser l'élément de tableau. Mêmes résultats ....

J'ai vérifié le contrôleur cible (Calc1ViewController) pour m'assurer qu'il n'y avait aucun problème avec le contrôleur. En l'affichant directement, le contrôleur (Calc1ViewController) s'affiche correctement.

Voici un code .....

L'initialisation du contrôleur de vue dans le dictionnaire:

Calc1ViewController *calc1ViewController = [[Calc1ViewController alloc] init]; 
[menuList addObject:[NSDictionary dictionaryWithObjectsAndKeys: 
        NSLocalizedString(@"SSC - page 1",@""), @"title", 
        calc1ViewController, @"viewController", 
        nil]]; 
[calc1ViewController release]; 

J'ai aussi essayé cela sans l'aide du dictionnaire - la création d'un contrôleur de vue en place du [[menuList objectAtIndex: ...]; ligne - en créant le contrôleur de vue comme ceci:

Calc1ViewController *targetViewController = [[Calc1ViewController alloc] init]; 


// the table's selection has changed, switch to that item's UIViewController 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    UIViewController *targetViewController = [[menuList objectAtIndex: indexPath.row] objectForKey:@"viewController"]; 
    [[self navigationController] pushViewController:targetViewController animated:YES]; 
    targetViewController = nil; 
} 

Le contrôleur de navigation est définie dans le AppDelegate et connecté au RootViewController à travers IB.

Lorsque je sélectionne une ligne de table, il apparaît dans le débogueur que le code pushViewController est exécuté, mais la vue suivante n'apparaît pas. Voici un exemple:

alt text http://thecoolestcompany.com/ssc-table-view.jpg

Toutes les idées?

Répondre

1

Enfin figured it out ......

J'ai eu l'UINavigationController et UITabBarController au même niveau. Après avoir déplacé le contrôleur de navigation en tant qu'enfant sur le contrôleur de la barre d'onglets, tout a fonctionné. Vous pouvez ajouter autant de contrôleurs de navigation à une barre d'onglets que vous le souhaitez. Dans IB, c'est un peu déroutant. Vous devez faire glisser le NavigationController dans le TabBar comme s'il s'agissait d'un nouvel élément de la barre d'onglets.

0

Il n'y a pas grand-chose à faire avec le code que vous avez fourni. La seule chose à laquelle je peux penser sans regarder plus de code est que vous n'avez peut-être pas correctement initialisé votre contrôleur de vue (celui de votre dictionnaire), ou que le dictionnaire dans lequel vous accédez n'est pas le bon ...

+0

Ajout d'un peu plus de code - s'il y a du code supplémentaire pour aider, faites le moi savoir et je vais certainement l'ajouter - merci! –

0

Quelle est la valeur de [self navigationController] lors de l'appel de pushViewController. Est-ce nul?

Quelle est la valeur de targetViewController lorsqu'il est transmis à pushViewController. Est-ce nul?

+0

ressemble à la targetViewController n'est pas nul et est le contrôleur de vue correct pour celui que j'affiche. J'ai des problèmes avec le navigateur de navigation .. il est initialement défini dans le délégué de l'application comme UINavigationController * calcPageNavigation; –

Questions connexes