2010-08-18 4 views
0

J'ai un problème que j'ai eu à travailler dans un test, mais maintenant dans une plus grande application, je n'arrive pas à trier.DidSelectRowAtIndexPath problème

d'abord j'ai une vue qui a six boutons chaque charge une vue différente J'utilise:

- (IBAction)showInfo2:(id)sender { 
InfoViewController *Infocontroller = [[[InfoViewController alloc] initWithNibName:@"InfoView" bundle:nil] autorelease]; 
Infocontroller.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
[self presentModalViewController:Infocontroller animated:YES]; 
} 

Cela semble fonctionner très bien, et charge la section suivante, dans ce cas « infoview ». Ensuite, je charge une vue de table et je la remplis de toutes les données d'un flux xml, cela fonctionne maintenant, (même si ce n'était pas une tâche facile pour moi!).

Le problème vient quand je sais essayer et utiliser: Rien ne semble arriver, c'est-à-dire que la nouvelle vue n'est pas chargée.

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

// Navigation logic may go here -- for example, create and push another view controller. 
SubInfoViewController *subInfoViewController = [[SubInfoViewController alloc] initWithNibName:@"SubInfoView" bundle:nil]; 
[self.navigationController pushViewController:subInfoViewController animated:YES]; 
[subInfoViewController release]; 
} 

Je sais que d'être appelé parce que cela fonctionne:

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

NSString *message = [[NSString alloc] initWithFormat:@"You selected a row"]; 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Row Selected" message:message delegate:nil cancelButtonTitle:@"Yes I did" otherButtonTitles:nil]; 
[alert show]; 

[message release]; 
[alert release]; 
} 

Toute aide plus que bienvenue, et s'il vous plaît être débutant doux :)

Répondre

2

Votre vue est probablement poussée dans la pile de navigation mais vous ne pouvez pas la voir car votre vue parente est modale.

Vous ne pouvez pas essayer d'afficher votre SubInfoViewController comme ceci:

SubInfoViewController *subcontroller=[[SubInfoViewController alloc] initWithNibName:@"SubInfoViewController" withBundle:nil]; 
[self presentModalViewController:subcontroller animated:YES]; 
[subcontroller release]; 

Si vous voulez garder une logique de navigation dans votre application, vous ne devriez pas afficher votre InfoViewController modalement mais le présenter d'une manière commune votre pile de navigation.

Vous pouvez essayer de fermer votre vue modale avant de pousser votre SubViewController. Dans ce cas, vous devez faire quelque chose comme ceci:

SubInfoViewController *controller=[[SubInfoViewController alloc] initWithNibName:@"SubInfoViewController" bundle:nil]; 
[self.parentViewController pushViewController:controller animated:YES]; 
[self dismissModalViewControllerAnimated:YES]; 
[controller release]; 

Vous recevrez un avertissement parce parentViewController peut ne pas répondre à pushViewController: animated: mais avec un NSLog vous verrez que votre parentViewController est en fait un UINavigationController.

Espérons que cela aide!

0

Quel est exactement le problème? Votre code semble bien à première vue.

+0

Désolé, c'est le contrôleur pushview qui ne semble pas charger la nouvelle vue. – jimbo

Questions connexes