2010-09-16 2 views
0

J'ai trouvé un exemple de pagination UIScrollView dans les docs de développement d'Apple et c'est exactement ce que je veux pour mon application. J'ai une vue principale avec un bouton "Aide" que je veux présenter une vue que les utilisateurs peuvent parcourir pour voir toutes les rubriques d'aide. L'échantillon est à:Comment implémenter réellement la pagination UIScrollView à partir de l'exemple d'Apple?

https://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/UIScrollView_pg/ScrollViewPagingMode/ScrollViewPagingMode.html%23//apple_ref/doc/uid/TP40008179-CH3-SW1

Et cela fonctionne comme annoncé, mais, comme tant d'exemples d'Apple, ils font toutes sortes de code dans le droit AppDelegate. J'ai mon propre AppDelegate, mais j'ai un NavigationController avec un RootView qui a ce bouton "Aide" dessus. Je n'arrive pas à intégrer l'exemple de code dans le mien et le faire fonctionner. Je suis sûr que je ne peux pas mettre le code qu'ils ont dans leur propre AppDelegate, mais comment le configurer me échappe. Est-ce que quelqu'un peut me diriger vers un exemple où ils font ce dont je parle?

EDIT: J'ai pu créer un nouveau projet et le faire fonctionner comme Apple en déplaçant toutes les méthodes AppDelegate dans le UIViewController que le modèle fourni et la création d'une nouvelle ContentPageUIViewController pour maintenir le contenu. Il peut faire défiler de page en page, donc je pense que je peux insérer ce code dans mon autre projet ok.

J'ai remplacé le applicationDidFinishLaunching avec un équivalent viewDidLoad et se sont débarrassés des trucs AppDelegate traitant window et tel. Puis j'ai changé la méthode initWithPageNumber: d'Apple pour faire référence à mes pages d'aide plutôt que de simplement créer des instances de leurs vues génériques.

- (id)initWithPageNumber:(int)page { 
    NSLog(@"--initWithPageNumber:ContentPage"); 
    if (self = [super initWithNibName:[NSString stringWithFormat:@"HelpPage%d", page] bundle:nil]) { 
     pageNumber = page; 
    } 
    return self; 
} 

Merci pour l'aide - parfois, il est bon d'avoir quelqu'un pour vous dire que cela peut être fait pour continuer!

+0

J'ai l'exemple de projet PageControl devant moi. Ça a l'air assez simple. Quelle est * exactement * votre question ici? –

+0

@Shaggy, je vais poster mon code le matin, mais je suis confus sur la façon d'implémenter le scrollview d'une autre vue par opposition à l'appdelegate. Ce que j'ai fait jusqu'ici est de placer tout le code d'appdelegate dans une sous-classe UIViewController et de changer l'applicationDidFinishLaunching en viewDidLoad. Je me retrouve avec une vue vide. J'ai peut-être des problèmes avec mes plumes, mais je les ai vérifiées avec soin sur l'échantillon. – Steve

Répondre

1

Dans l'exemple de code, la méthode applicationDidFinishLaunching: définit le UIScrollView (et un UIPageControl, mais ignorons cela pour le moment), puis "charge" les deux premières pages. "Charger" une page consiste à charger en mémoire le contrôleur de vue de cette page et à la mettre en cache. Il ajoute ensuite la vue de ce contrôleur en tant que sous-vue au décalage UIScrollView avec un x approprié en fonction de son "numéro de page". Vous devriez être capable de faire tout cela dans votre viewDidLoad.

Si vous avez une vue vide lorsque la vue de votre contrôleur de vue est affichée, vous n'avez pas ajouté correctement la sous-vue à votre UIScrollView. En fonction de ce que vous avez modifié exactement, cela pourrait être une combinaison de (a) ne pas corriger le décalage x, (b) ne pas définir le cadre correctement, ou (c) ne pas l'ajouter comme sous-vue correctement.

Si vous publiez un peu de votre propre code, nous pourrions être en mesure de faire la lumière sur le problème.

Questions connexes