2010-07-09 2 views
1

droit, cela peut ne pas être possible, mais peut-être il ...Ajout UIViewControllers à un UIScrollView

J'ai 3 UIViewControllers, chacun avec leurs propres fichiers qui contiennent la XIB mise en page pour chaque diapositive d'une présentation (chaque diapositive contiendra de la vidéo, des images, d'autres éléments interactifs). Je les ai accroché tout à un UIScrollView en les ajoutant un par un, voir ci-dessous:

page1 *vc = [[page1 alloc] initWithNibName:@"page1" bundle:nil]; 
vc.view.frame = CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f); 
[sv addSubview:vc.view]; 
[vc release]; 
page2 *vc2 = [[page2 alloc] initWithNibName:@"page2" bundle:nil]; 
vc.view.frame = CGRectMake(1024.0f, 0.0f, 1024.0f, 768.0f); 
[sv addSubview:vc2.view]; 
[vc2 release]; 
page3 *vc3 = [[page3 alloc] initWithNibName:@"page3" bundle:nil]; 
vc.view.frame = CGRectMake(2 * 1024.0f, 0.0f, 1024.0f, 768.0f); 
[sv addSubview:vc3.view]; 
[vc3 release]; 

Ce que je veux être en mesure de faire est de créer un tableau de UIViewController et la boucle autour du réseau pour les ajouter, plutôt que un par un. semblent d'abord, je ne peux pas créer un tableau de UIViewControllers, mon code est le suivant:

NSArray *pages = [[NSArray alloc] initWithObjects:page1, page2, page3, nil]; 

et l'erreur est: l'expression attendue avant « page1 ».

J'ai réussi à charger les UIViewControllers avec le code suivant:

for (int i = 1; i <= 3; i++) { 
    UIViewController *vc = [[UIViewController alloc] initWithNibName:[NSString   stringWithFormat:@"page%i", i] bundle:nil]; 
    vc.view.frame = CGRectMake((i-1) * 1024.0f, 0.0f, 1024.0f, 768.0f); 
    [sv addSubview:vc.view]; 
    [vc release]; 
} 

Mais même si le contenu des XIBs a été affiché, la fonction est de viewDidLoad jamais tiré le chargé dans UIViewControllers.

Alors, quelqu'un a-t-il des conseils pour charger un tableau de UIViewControllers dans un UIScrollView?

Merci!

Répondre

0

Qu'est-ce que page1 *vc? Est-ce que page1 est le nom de votre classe de contrôleur de vue personnalisée? Il doit commencer par une lettre majuscule, c'est-à-dire Page1ViewController *vc.

Votre tableau a besoin des instances des classes, pas des classes elles-mêmes.

NSArray *pages = [[NSArray alloc] initWithObjects:vc, vc2, vc3, nil]; 

Mais alors, vous ne devriez pas libérer les contrôleurs de vue jusqu'à ce que vous les avez ajoutés à votre tableau de pages, à savoir mettre [vc release]; [vc2 release]; etc. après votre NSArray *pages = ...;

Questions connexes