2009-08-20 6 views
0

J'ai un problème avec la personnalisation de chaque page en utilisant pagecontrol et UIScrollView. Je personnalise Page Control d'Apple.Comment personnaliser le contenu de chaque page en utilisant Page Control et UIScrollView?

Fondamentalement, je voudrais avoir chaque page différente avec du texte et de l'image alternativement sur une page différente. La page 1 contiendra tout le texte, la page 2 n'aura que des images, la page 3 aura tout le texte et continuera.

Ce code d'origine est:

// Set the label and background color when the view has finished loading. 
    - (void)viewDidLoad { 
     pageNumberLabel.text = [NSString stringWithFormat:@"Page %d", pageNumber + 1]; 
     self.view.backgroundColor = [MyViewController pageControlColorWithIndex:pageNumber]; 
} 

Comme vous pouvez le voir, ce code ne montre que Page 1, Page 2 etc que vous faites à droite.

J'ai essayé de mettre dans ce nouveau code mais cela n'a fait aucune différence. Il n'y a pas d'erreur. Je sais que c'est un code assez simple. Je ne sais pas pourquoi ça ne marche pas.

Je déclare pageText comme UILabel.

// Set the label and background color when the view has finished loading. 
- (void)viewDidLoad { 
    pageNumberLabel.text = [NSString stringWithFormat:@"Page %d", pageNumber + 1]; 
    self.view.backgroundColor = [MyViewController pageControlColorWithIndex:pageNumber]; 
    if (pageNumber == 1) { 
     pageText.text = @"Text in page 1"; 
    } 
    if (pageNumber == 2) { 
      pageText.text = @"Image in page 2"; 
    } 
    if (pageNumber == 3) { 
      pageText.text = @"Text in page 3"; 
    } 

} 

Je ne sais pas pourquoi cela ne fonctionne pas. Aussi, si vous avez une meilleure façon de le faire, faites le moi savoir. Merci.

Répondre

0

J'ai téléchargé l'échantillon, ajouté les lignes suivantes au MyViewController.h

IBOutlet UILabel *pageText; 

@property (nonatomic, retain) UILabel *pageText; 

Dans le MyViewController.m j'ai ajouté le @synthesize PageText; ligne et votre contenu viewDidLoad.

J'ai ouvert le fichier MyView.xib/en dans le constructeur d'interface et connecté la nouvelle étiquette. Compilé et couru et cela a fonctionné pour la plupart. La seule chose qui ne semblait pas juste était que c'était une page derrière. donc je l'ai réécrit pour gérer correctement les pages impaires ou paires.

- (void)viewDidLoad { 
    pageNumberLabel.text = [NSString stringWithFormat:@"Page %d", pageNumber + 1]; 
    self.view.backgroundColor = [MyViewController pageControlColorWithIndex:pageNumber]; 
    if (pageNumber % 2) { 
     pageText.text = [NSString stringWithFormat:@"Image in page %d", pageNumber + 1]; 
    } else { 
     pageText.text = [NSString stringWithFormat:@"Text in page %d", pageNumber +1]; 
    } 
} 
+0

Merci l'homme. Je pense que j'ai oublié de connecter pageText au fichier nib. Je l'ai fait et mis votre code - Fonctionne bien! Cependant cependant, comment personnalisez-vous chaque page? Dites, Page 1 - vous mettez des textes Page 2 - vous mettez une image (c'est très utile si vous pouviez donner du code pour mettre l'image aussi) Page 3 - vous mettez des textes - mais des textes différents. Page 4 - vous mettez des images différentes De même, lorsque vous placez les nouveaux codes sous l'instruction if, ils remplacent le premier code de pageNumberLabel. Comment l'avez-vous séparé entre pageNumberLabel et pageText mais sur la même page avec un contenu différent bien sûr? – viper15

+0

Je l'ai eu. J'ai créé un UIlabel pointant sur pageText, donc séparez-le de pageNumberLabel. J'utilise si déclaration - fonctionne bien. Merci mec! – viper15

0

Cette réponse aura très peu de code, car je n'ai pas d'exemple distinct. Vous voulez essentiellement avoir un tableau de pages, qui contient une vue (ou un contrôleur de vue) pour chaque page. Il n'est pas nécessaire que chaque vue/contrôleur dans le tableau soit le même (bien que vous devriez avoir toutes les vues ou tous les contrôleurs de vue, pas les deux). Une fois que vous avez cela, vous pouvez charger quelque chose de distinct en fonction de la page que vous chargez.

Est-ce que cela a du sens?

+0

C'est vrai. Puis-je simplement ne pas utiliser array et utiliser une chaîne ou une image à la place? Si j'utilise des tableaux, comment cela peut-il être implémenté si basé sur le contrôle de page d'Apple? – viper15

0

essayez de télécharger ce projet à partir du repo SVN. J'ai été incapable de finir la documentation mais vérifie IGUIScrollViewElements ... il y a un court exemple pour IGUIScrollViewImage et le code est assez semblable ... Je ferai de mon mieux pour finir des exemples pour ceux restants dès que possible ...

http://code.google.com/p/iphone-guru-uilibrary/

Questions connexes