2010-12-04 7 views
0

J'ai donc une question sur les vues sur iPhone. J'ai une application basée sur le modèle de barre d'onglets dans XCode. L'une des vues de l'onglet est un TableView. Dans cette vue de table, lorsqu'un utilisateur sélectionne l'une des cellules, je veux qu'il charge une vue qui montre plus de détails à ce sujet.iPhone Vues Question

En ce moment, j'ai:

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

    SportsAppDelegate *appDelegate = (SportsAppDelegate *)[[UIApplication sharedApplication] delegate]; 


    // Deselect 
    [self.tableView deselectRowAtIndexPath:indexPath animated:YES]; 

//Process which one, sets an index 

    //Show detail 
    SportsGameView *detail = [[SportsGameView alloc] init]; 
    [detail setMe:index]; //sets the index that tells it which one 

    [appDelegate.window insertSubview:detail.view atIndex:0]; 
    [self.view removeFromSuperview]; 
    [detail release]; 
} 

Dans le SportsGameView (celui que je suis en train de charger sur le dessus), j'ai setMe défini pour initialiser un tas de UILabels avec ceux-ci.

Je peux confirmer qu'il les obtient, mais de toute façon, il n'apparaît pas réellement. Je soupçonne que cela a quelque chose à voir avec mon .xib. J'ai défini IBOutlets dans SportsGameView comme je le ferais normalement, et les ai branchés dans Interface Builder.

Quelqu'un sait pourquoi? Désolé, c'était un peu déroutant.

Merci!

+0

est SportsGameVoir une sous-classe de UIView? Ou c'est en fait une sous-classe de UIViewController? –

+0

C'est une sous-classe de UIViewController, mais peu importe les gars, je l'ai compris! Je ne peux pas le mettre dans init parce qu'il n'aurait pas encore fait quoi que ce soit. – Kevin

+0

OK, super. Mais si vous utilisez UIViewControllers de toute façon, vous trouverez beaucoup plus facile d'utiliser UINavigationController pour cela ou du moins utilisez pushModalViewController au lieu de faire le swapping à la main. –

Répondre

1

Vous ne voulez probablement pas ajouter l'affichage avec insertSubview:... atIndex:0, ce qui le placera "au-dessous" de toutes les autres vues. Si vous voulez le mettre en haut, utilisez addSubview:.

+0

En fait, je ne le fais pas. Parce que cela le mettrait en haut de la barre d'onglets ... – Kevin

+0

Eh bien, vous le mettez actuellement en dessous de * tout * ... Vous devriez garder votre hiérarchie de vue bien rangée et l'ajouter à l'aperçu approprié. Peut-être qu'un contrôleur de navigation entre les deux serait pratique. Je me sens comme une sous-vue directe de la fenêtre, il est mal placé. – Eiko