2009-12-16 7 views
1

Salut tout le monde. J'essaye d'incorporer un simple UINavigationController dans mon application de barre d'onglets. J'ai le TabBar défini comme contrôleur de racine et tout semble fonctionner correctement. Cette méthode est appelée correctement et ne casse pas encore, elle ne change pas pour ma vue détaillée. Je suis complètement perdu sur celui-ci.-didSelectRowAtIndexPath ne fonctionne pas pour moi. iPhone SDK 3

J'ai suivi les instructions de cette vidéo: http://www.youtube.com/watch?v=LBnPfAtswgw&feature=player_embedded#. J'ai changé certaines choses pour le faire fonctionner avec ce que j'essaye d'accomplir mais la logique sous-jacente que j'ai laissée la même chose. Elle travaille avec SDK 2. * et j'utilise 3. *. Je suppose que cela a quelque chose à voir avec ça. Quelqu'un peut m'aider? C'est ce que mon didSelectRowAtIndexPath ressemble:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Navigation logic may go here. Create and push another view controller. 
NSInteger row = [indexPath row]; 
if(self.detailViewController == nil) { 
    LogEntryDetailViewController *logEntryDetail = [[LogEntryDetailViewController alloc] 
       initWithNibName:@"LogEntryDetailView" bundle:[NSBundle mainBundle]]; 
    self.detailViewController = logEntryDetail; 
    [logEntryDetail release]; 
} 

detailViewController.title = [NSString stringWithFormat:@"%@", [logEntriesArray objectAtIndex:row]]; 

ProgNameAppDelegate *delegate = (ProgNameAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[delegate.logViewNavController pushViewController:self.detailViewController animated:YES]; 
} 

Je vais les noix ici. Si je dois poster ceci ailleurs je serai heureux de le faire. Merci d'avance!

+0

Quel est le contrôleur racine de votre contrôleur de navigation? – Anurag

+0

Cela me semble bien, même si obtenir la délégation de l'application et obtenir le contrôleur de navigation à partir de là est un peu étrange et peut-être le problème (je devrais voir plus de code à savoir à coup sûr). Vous pouvez probablement sortir avec [self.navigationController pushViewController: ...] – bpapa

+0

Im nouveau sur le SDK iPhone, donc je ne suis pas complètement sûr de ce que vous demandez Anurag. S'il vous plaît expliquer si je peux répondre correctement. Je vais répondre à la question de bpapa ci-dessous sur la réponse. – Trent

Répondre

1

Vous devez modifier ces lignes:

ProgNameAppDelegate *delegate = (ProgNameAppDelegate *)[[UIApplication sharedApplication] delegate]; 
[delegate.logViewNavController pushViewController:self.detailViewController animated:YES]; 

avec ceci:

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

Si vous avez un contrôleur de barre d'onglets comme vous le dites, puis pousser votre detailViewController sur delegate.logViewNavController est probablement la mauvaise chose à faire (en fonction de ce que delegate.logViewNavController est ..., mais puisque cela ne fonctionne pas pour vous, je parie que c'est là que votre confusion est).

En général, vous n'avez pas besoin de compliquer votre code en accédant au délégué d'application pour récupérer un tel contrôleur. Tout ce que vous devez faire est de pousser votre nouveau contrôleur sur self.navigationController dans la plupart des cas pratiques.

+0

J'ai remplacé ces lignes et je reçois maintenant cette "erreur: demande de membre 'logViewNavController' dans quelque chose qui n'est pas une structure ou une union C'est pourquoi j'appelais le délégué Plus d'idées? Merci encore – Trent

+0

Je le reprends. Je n'ai pas tapé correctement votre code suggéré, ça marche, merci beaucoup! – Trent