UIPageViewController avec différents ViewControllers, droit chemin?
En gros, j'ai une Table View Controller et un mode normal de Contrôleur, je veux faire en sorte que je puisse glisser entre le point de vue des contrôleurs comme sur l'écran d'accueil de l'app (évident même type de vue-contrôleur).
Mais la chose dont je suis constat est que le UIpageviewcontroller
est usaully utilisé lorsque vous avez plusieurs vues d'un même type de viewcontroller
par exemple de glisser entre les images, vous pourriez tout simplement un index dans la classe et un tableau d'images relatives à l'index et de le configurer de cette façon.
Mais j'essaie de vue différents contrôleurs de cet ensemble. Maintenant, c'est le deux, mais sera certainement aller jusqu'à 4 environ.
Est UIPageViewController
la bonne façon de le configurer ou quelque chose d'autre.
EDIT: Code ajouté ci-dessous
//
// ViewController.m
// testb
//
#import "MainPostController.h"
#import "MainTableViewController.h"
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize pageViewController;
@synthesize indexValue = _indexValue;
- (void)viewDidLoad
{
[super viewDidLoad];
self.indexValue= 1;
NSLog(@"main intitated");
//Do any additional setup after loading the view, typically from a nib.
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
self.pageViewController.dataSource = self;
MainTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTableViewController"];
MainPostController *pvc;
NSArray *viewcontrollers =[NSArray arrayWithObjects:tvc, pvc, nil];
[self.pageViewController setViewControllers:viewcontrollers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30);
[self addChildViewController:pageViewController];
[self.view addSubview:pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
//Dispose of any resources that can be recreated.
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
if (self.indexValue == 1) {
MainPostController *pvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainPostController"];
self.indexValue = 0 ;
return pvc;
}
else return nil;
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
if (self.indexValue == 0) {
MainTableViewController *tvc = [self.storyboard instantiateViewControllerWithIdentifier:@"MainTableViewController"];
self.indexValue = 1;
return tvc;
}
else return nil;
}
@end
Je veux le intial vue à la table view controller(tvc) et je veux le Post-vue-contrôleur(pvc) pour être à sa gauche. Je peux charger et de le glisser entre les deux facilement, mais parfois je puisse glisser plus loin que les limites donc, fondamentalement, si je commence sur le tvc-->pvc-->tvc alors je peux aller plus loin en faisant glisser de droite à le même tvc alors la limite est atteinte ou aller dans l'autre sens tvc-->pvc-->tvc-->pvc-->pvc balayez vers la gauche pour la dernière transition. Les limites sont atteintes en fin de compte. Une fois que l'application, au début, lance à la tvc je ne peut pas aller de l'avant, d'une page, (qui est ce qui devrait être le cas) et si je vais tvc-->pvc et d'essayer d'aller à une page sur la gauche, il ne me laissera pas (qui est ce qui devrait arriver)
Grâce
UIPageViewController
est conçu pour charger plusieurs contrôleurs de vue. Il n'y a pas nécessairement le même type de vue-contrôleur. À l'aide d'un onglet contrôleur pourrait être une autre option.Ils ne changent pas correctement, j'ai mis un indice dans le viewcontroller montrant la pageviewcontroller, je retourne zéro lorsque la limite de l'indice est atteint, il est toujours en évolution la page à la même page s'affiche de nouveau
Montrer le code pertinent.
Le Code montré ci-dessus maintenant
OriginalL'auteur lbpman1 | 2013-12-22
Vous devez vous connecter pour publier un commentaire.
Enfin fait, ne pas avoir à ajouter des propriétés aux différentes classes. Juste testé la classe. Voici le code:
Devrait être facile d'ajouter plus de contrôleurs de vue que j'ai juste besoin d'ajouter d'autre si les déclarations pour les tester. Le principal problème solveur a été la méthode isKindOfClass:
Merci pour votre réponse les gars!
OriginalL'auteur lbpman1
J'ai eu le même problème, voici ce que j'ai fait et fonctionne parfaitement.
Remarque:
self.viewControllerIDArr
conteneurs Storyboard IDs de la viewControllers.Il ressemble à ceci dans la table de montage séquentiel:
OriginalL'auteur 0yeoj
C'est une vieille question, mais depuis j'ai travaillé sur ce problème, je vais poster ma solution.
La première fois que je l'ai fait, j'ai ajouté mon code
Qui a reçu des problèmes lorsque vous défiler en continu les points de vue à l'aide de deux doigts et
didFinishAnimating
n'est pas appelée à moins que le défilement s'arrête.Donc j'ai simplement utilisé cette méthode du délégué à la place.
Où lors de l'actuelle
UIViewController
(ouUINavigationController
aime ce que je suis à l'aide, à l'aide d'un restorationIdentifier pour identifier ma manette de navigation) et l'indice est une valeur globale de savoir quiUIViewController
dans le tableau à instancier.OriginalL'auteur Joshua Vidamo
Vous pouvez utiliser un UIViewPageViewController, avec une certaine logique personnalisée.
Comme vous le dites, la façon de gérer cela est d'avoir l'affichage de la page du contrôleur de la source de données, il suffit de créer le même type de vue-contrôleur pour chaque page et de le remplir avec les données de votre modèle.
Dans votre cas, vous pourriez ajouter une pageNumber de propriété à tous les contrôleurs de vue que vous allez à l'accueillir dans votre page-vue-contrôleur. Puis, dans la source de données méthodes, utilisez le numéro de page de l'ancienne-vue-contrôleur de comprendre le nouveau numéro de la page. Puis, un commutateur basé sur le numéro de page. Chaque cas dans l'instruction switch serait de créer un autre type de vue-contrôleur.
OriginalL'auteur Duncan C