2011-08-03 5 views
0

J'ai un UIScrollView et cinq UIViewController s A, B, C, D, E. L'ordre des vues UIViewController à afficher dans la vue de défilement dépend de certains pré-requis (par exemple, un jour, il pourrait être B, A, E, D, C et les prochaines E, A, D, B, C et ainsi de suite sur).Attribuer dynamiquement des vues à la vue de défilement

Comment puis-je savoir quel UIViewController doit être affiché (comme dans quelque chose comme des étiquettes pour chaque UIViewController qui peut être stocké dans un tableau et mis à jour)? Est-il possible d'affecter des vues à la vue défilée de la manière dynamique indiquée ci-dessus?

+0

quelles données vous montrerez dans la vue-contrôleurs? ? – mayuur

+0

Une vue de table est commune .. Certains auront des contrôles et des boutons supplémentaires segmentés .. cela aurait-il de l'importance? – Prathiba

+0

oui, je veux dire que si les données sont assez similaires entre les différentes vues, il suffit d'utiliser cinq UIViews au lieu de UIViewControllers. – mayuur

Répondre

0

Vous voulez trouver un moyen de permuter les 5 contrôleurs de vue? il peut être utile d'utiliser la propriété des nombres premiers.

cela dépend du nombre de permutations que vous voulez. mais puisqu'il n'y a que 5 contrôleurs de vue, il ne peut y avoir plus de 5! = 120 permutations ce qui est bien sur 5 est que c'est un nombre premier

donc si vous calculez (n * a)% 5, où a est un nombre constant de 0 à 4, et n est une variable de 1 à 5 vous obtenez une table comme ceci:

a==0, 0,0,0,0,0 
a==1, 1,2,3,4,0 
a==2, 2,4,1,3,0 
a==3, 3,1,4,2,0 
a==4, 4,3,2,1,0 

comme vous l'avez vu, c'est 5 permutations complètement différentes, où chaque numéro apparaît exactement une fois.

donc, si vous voulez avoir 120 permutations

appliquer juste un nombre const b (de 0 à 4), et calculer (n * a + b)% 5

vous obtiendrez 5 fois le résultat précédent, qui est 125, mais il y a quelques répétitions, alors le résultat final sera de 120 permutations.

donc, la seule chose que vous avez à faire est de déterminer a et b avec votre condition

et appliquer le code suivant:

int result = (n*a + b)%5; 
static UIView *addedView = nil; 
if(addedView != nil) 
    [addedView removeFromSuperview]; 

switch(result) 
{ 
    case 0: 
     [self.scrollView addSubview:VCA.view]; 
     addedView = VCA.view; 
     break; 
    case 1: 
     [self.scrollView addSubview:VCB.view]; 
     addedView = VCB.view; 
     break; 

    //and so on... 
} 

hope it helps 
+0

Je vais essayer de vérifier ... Merci quand même! :) – Prathiba

Questions connexes