2010-04-26 4 views
0

Je n'arrive pas à comprendre cela - je sais que ça doit être simple ... Je commence à me sentir bête. J'ai deux viewControllers. MainViewController.h/m et LevelsViewController.h/mAjouter un sous-menu plus petit avec une nouvelle origine

Je souhaite ajouter une sous-vue de la classe LevelsViewController et une vue intégrée dans IB appelée levelsView. Je l'appelle à partir du fichier MainViewController.m. Le levelsView est seulement 200x200 pixels et je veux le décaler de l'origine du cadre du superView par x = 140 pixels et y = 50 pixels.

J'ai ce travail - la vue s'affiche, mais je ne peux pas comprendre comment le compenser. Il n'apparaît qu'à l'origine de l'image 0,0 superView. (Le superView montre ci-dessous, ce que je veux).

Voici le code que j'appelle dans la méthode dans MainViewController.m qui affiche levelsView. (J'ai commenté certaines des choses que j'ai essayées - mais jette cette erreur: erreur: demande de membre 'frame' dans 'myLevelsView', qui est de type non-classe 'LevelsViewController *'

)

- (void) displayLevelsPage { 

    if (self.theLevelsView == nil) // Does not yet exist - therefore create 
    { 
     LevelsViewController * myLevelsView = [[LevelsViewController alloc] initWithNibName:@"levelsView" bundle:[NSBundle mainBundle]]; 
     NSLog(@"NEW theLevelsView instance created!"); 
     CGRect frame2 = CGRectMake(140, 50, 200, 200); 
     //myLevelsView.frame = frame2; 
     self.theLevelsView = myLevelsView; 
     [myLevelsView release]; 
    } 

    [self.view addSubview: theLevelsView.view]; 
    NSLog(@"Levels View has been activated"); 
} 

Toute idée serait appréciée.

Répondre

2

myLevelsView ne dispose pas d'un cadre mais il a une vue et qui a un cadre, de sorte de commentaire de la ligne pourrait être:

myLevelsView.view.frame = frame2;

Mais un viewcontroller ne doit pas avoir un viewcontroller comme sous-vue. Un viewcontroller est destiné à contrôler l'ensemble de la vue. Seul un contrôleur de vue peut contrôler l'écran à la fois. Utilisez un UIView (ou toute sous-classe de UIView) pour les sous-vues dans MainViewController.

+0

Merci - cela a résolu le problème. Oui - J'étais conscient du problème de ViewController, mais je pensais qu'en désactivant toute interaction de l'utilisateur sur le superView avec setUserInteractionEnabled: NON, je pourrais m'en tirer avec. Peut-être pas la meilleure stratégie. – ReachWest

Questions connexes