2010-07-17 12 views
0

Je recherche de l'aide pour un programme que je développe. Fondamentalement, il contient deux vues. La première vue a un bouton et une action associée me conduit à ma vue suivante où il y a une vue défilante pour trois pages (comme dans l'exemple PageControl donné par apple.) J'utilise le contrôleur de navigation pour pousser la vue depuis le premier vue à la deuxième vue. Mais en poussant je ne suis pas capable de faire défiler la page ou d'utiliser le contrôle de page ou quoi que ce soit. Il vient juste une vue normale. Le code est le même que le code pageControl et fonctionne comme un module séparé. Mais quand je veux intégrer ce code pageControl avec une première vue et un bouton de clic cela ne fonctionne pas. S'il vous plaît aider.Impossible de créer une vue avec un UIScrollView

// cette fonction est un jeu d'action sur un bouton dans le rootviewcontroller.

-(IBAction) viewScrollPages:(id)sender{ 
UIViewController *controller = [[MyViewController alloc] initWithPageNumber:0]; 
[self.navigationController pushViewController:controller animated:NO]; 
[controller release]; 

}

- (id)initWithPageNumber:(int)page { 
if (self = [super initWithNibName:@"MyViewController" bundle:nil]) { 
    pageNumber = page; 
} 
return self; 

}

- (void)viewDidLoad { 
NSMutableArray *controllers = [[NSMutableArray alloc] init]; 
for (unsigned i = 0; i < kNumberOfPages; i++) { 
    [controllers addObject:[NSNull null]]; 
} 
self.viewControllers = controllers; 
[controllers release]; 
// a page is the width of the scroll view 
scrollView.pagingEnabled = YES; 
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * kNumberOfPages, scrollView.frame.size.height); 
scrollView.showsHorizontalScrollIndicator = NO; 
scrollView.showsVerticalScrollIndicator = NO; 
scrollView.scrollsToTop = NO; 
scrollView.delegate = self; 
pageControl.numberOfPages = kNumberOfPages; 
pageControl.currentPage = 0; 
// pages are created on demand 
// load the visible page 
// load the page on either side to avoid flashes when the user starts scrolling 
[self loadScrollViewWithPage:0]; 
[self loadScrollViewWithPage:1]; 
pageNumberLabel.text = [NSString stringWithFormat:@"Page %d", pageNumber + 1]; 
self.view.backgroundColor = [MyViewController pageControlColorWithIndex:pageNumber]; 
[super viewDidLoad]; 

}

+1

Un code peut nous aider à comprendre votre problème. Post le code où vous créez et poussez le contrôleur de vue qui doit contenir la vue de défilement et 'viewDidLoad' dans ce contrôleur de vue ... –

+0

J'ai ajouté le code. C'est fondamentalement le même code que l'exemple pageControl donné par apple http://developer.apple.com/iphone/library/samplecode/PageControl/Introduction/Intro.html. La modification dont j'ai besoin est la suivante: au lieu de lancer les pages de défilement dès que l'application est lancée, je demande qu'elle soit affichée seulement après un clic sur un bouton. Merci pour votre réponse. Appréciez-le grandement. – Viraj

+0

J'ai ajouté le code. C'est le même que l'exemple de Pagecontrol donné par apple http://developer.apple.com/iphone/library/samplecode/PageControl/Introduction/Intro.html. La seule modification dont j'ai besoin est qu'au lieu des pages de défilement arrivant dès que l'application se lance, elle devrait venir après le clic d'un bouton ou quelque chose. Merci pour votre réponse, appréciez-le. – Viraj

Répondre

0

Il semble que votre pousser une vue normale qui est une sous-vue de la scrollview au lieu de pousser le scrollview lui-même.

+0

J'ai étendu la classe à partir d'un UIViewController et je me suis conformé au protocole UIScrollViewDelegate. – Viraj

+0

C'est votre contrôleur pour le scrollview. Je pense que vous avez un mauvais affichage pour la vue du contrôleur de scrollview, de telle sorte que lorsque vous appuyez sur le contrôleur, il place l'une des sous-vues de la scrollview au lieu de la scrollview elle-même. – TechZen

+0

Oui, je suppose que c'est le problème. Comment serais-je en mesure de pousser la vue de défilement plutôt que la sous-vue de la vue de défilement? J'ai joint le code pour référence. Merci pour l'aide. – Viraj