2013-10-03 7 views
1

J'ai une vue de tableau avec 7 lignes, je veux cliquer sur mes lignes et charger le DetailView (UIViewController)uitableview didSelectRowAtIndexPath « ligne sélectionnée ne chargeant pas la vue détaillée »

je peux sélectionner la ligne et je peux voir la console de connexion mais elle ne charge jamais la vue de détail

pourriez-vous s'il vous plaît me donner quelques hits, quel est le problème?

#pragma mark - Table view delegate 

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
NSLog(@"selected rows"); 

MyBookDetailView *c = [[MyBookDetailView alloc] init]; 

[self.navigationController popToRootViewControllerAnimated:NO]; 
[self.navigationController pushViewController:c animated:YES]; 
} 

J'essaie aussi performSelectorOnMainThread mais juste cliquable et je dois charger mon problème contrôleur de vue, j'ajoute également délégué - (void) méthode viewDidLoad,

Merci à l'avance!

Code Lates:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 


[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
MyBookDetailView *c = [[MyBookDetailView alloc] initWithNibName:@"MyBookDetailView" bundle:nil]; 

[self.navigationController pushViewController:c animated:YES]; 

} 
+0

Pouvez-vous vérifier 2 choses: 1. La méthode viewDidLoad sur MyBookDetailView est appelé? 2. Pouvez-vous essayer après avoir supprimé cette déclaration: [self.navigationController popToRootViewControllerAnimated: NO]; – AC1

+0

Pop et pousser ensemble. Si navigationController n'est pas nul. Je suggère de manipuler la pile viewControllers de navigationController pour le traiter en une fois. – tdelepine

+1

@ AC1 Je mets NsLog sur viewDidLoad MyBookDetailView mais il ne l'imprime jamais, je supprime aussi cette déclaration [self.navigationController popToRootViewControllerAnimated: NO]; mais rien ne se passe – Elnaz

Répondre

1

Pourquoi vous voulez faire apparaître tous les contrôleurs withing NavigationController pile au contrôleur racine et en même temps votre besoin pour pousser nouvelle MyBookDetailView (j'espère que sa classe de base est UIViewController). De toute façon, MyBookDetailView *c = [[MyBookDetailView alloc] init]; ne fonctionnera pas pour vous. Car c l'objet de la vue UIViewController (MyBookDetailView) est nul. Je recommande d'utiliser la pile d'exécution de trace de point d'arrêt et la variable que vous essayez de supprimer et d'ajouter à l'exécution, vous saurez mieux ce qui se passe dans votre programme.

Je pense que le code suivant peut travailler pour vous,

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
    MyBookDetailView *c = [[MyBookDetailView alloc] initWithNibName:@"WriteYourNibNameIfYouCreate" bundle:nil]; 

    [self.navigationController pushViewController:c animated:YES]; 
} 
+0

merci pour votre réponse, MyBookTableView est UITableViewController et aussi MyBookDetailView est UIViewController votre code n'a pas fonctionné – Elnaz

+0

@ElnazShahmehr, vérifiez mon code édité. – Tirth

+0

J'utilise le fichier nib – Elnaz

Questions connexes