tableView la méthode didSelectRowAtIndexPath n'est pas appel

  • Créateur du sujet Créateur du sujet Su4p
  • Date de début Date de début

Su4p

Membre enregistré
19 Mars 2012
4
0
37
Bonjour,
Je vais d'abord me présenter je suis développeur (PHP, Java , .net , C) et depuis peu je m’intéresse à objective-C, j'essaie de développer une application pour faire la présentation d'un congrès.
Comme le titre l'indique j'ai une tableView que je remplis à partir d'un fichier XML tout cela fonctionne très bien.
Ce que je ne comprends pas (surement parce que je n'ai pas le recul nécessaire) c'est pourquoi la méthode didSelectRowAtIndexPath n'est pas appelée lorsque je sélectionne une ligne (la ligne est bien sélectionner et est bien afficher en bleu).
Voici la méthode qui remplis mon tableView et qui fonctionne très bien.

Bloc de code:
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additionl setup after loading the view, typically from a nib.
    NSString *path = [[NSBundle mainBundle] pathForResource:@"exposants" ofType:@"plist"];
    NSDictionary *root = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSArray *arrayFromDict = [root objectForKey:@"root"];
    
    NSEnumerator *enumerator = [arrayFromDict objectEnumerator] ;
    NSDictionary *object;
    tabExposants = [[NSMutableArray alloc] init];
     
    while(object = [enumerator nextObject]){
        Exposant *monExposant = [[Exposant alloc] initWithDictionary:object];
        [tabExposants addObject:monExposant];
        //[monExposant release];
    }
    

    
    //[root release];

Et voici la méthode qui n'est pas appelé
sad.png



Bloc de code:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"ok");
    VC_page_exposant_detail *page_exposant_detail = [[VC_page_exposant_detail alloc ]initWithNibName:@"VC_page_exposant_detail" bundle:nil];
    page_exposant_detail.monExposants = [self.tabExposants objectAtIndex:indexPath.row];
    
    [self.navigationController pushViewController:page_exposant_detail animated:YES];
    
}
Help ?
 
Je pense que je peux te répondre non.
Ma vue a été créée à partir d'UIviewController sur laquelle j'ai déposé un tableView.
Dis moi si je suis à coté de la plaque.
 
tabExposants ne possède pas de propriété delegate puisque c'est un NSMutableArray et je n'ai pas d'objet tableView.

---------- Nouveau message ajouté à 16h48 ---------- Le message précédent a été envoyé à 15h41 ----------

Donc j'ai avancé en reliant dans xib le delegate au file's owner j'ai bien le NSLog(@"ok");.
Problème suivant [self.navigationController pushViewController:page_exposant_detail animated:YES]; ne fonctionne pas car self.navigationController renvoie NULL.
Une piste ?
 
Dernière édition:
Il est dans un tabBarController, tu crois que tu peux toujours m'aider ? Voici le code de mon AppDelegate.m :
Bloc de code:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    UIViewController *viewController1, *viewController2, *viewController3, *viewController4, *viewController5;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        viewController1 = [[VC_page_accueil alloc] initWithNibName:@"VC_page_accueil_iphone" bundle:nil];
        viewController2 = [[VC_page_exposants alloc] initWithNibName:@"VC_page_exposants_iphone" bundle:nil];
        viewController3 = [[VC_page_sessions alloc] initWithNibName:@"VC_page_sessions_iphone" bundle:nil];
        viewController4 = [[VC_page_agenda alloc] initWithNibName:@"VC_page_agenda_iphone" bundle:nil];
        viewController5 = [[VC_page_plan alloc] initWithNibName:@"VC_page_plan_iphone" bundle:nil];
    } else {
        viewController1 = [[VC_page_accueil alloc] initWithNibName:@"FirstViewController_iPad" bundle:nil];
        viewController2 = [[VC_page_exposants alloc] initWithNibName:@"SecondViewController_iPad" bundle:nil];
    }
    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:
                                             viewController1, 
                                             viewController2, 
                                             viewController3,
                                             viewController4,
                                             viewController5,
                                             nil];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}