UIPageControl carga nueva vista o controller diferente

Acabo de "intentar" pasar al tutorial de manzanas de PageControl. Ahora debo señalar que no entendí completamente esto, parecía complejo, así que me disculpo si esta pregunta es muy obvia.

Noté que Apple cargaba su contenido desde un file. Ahora que todo es agradable y fácil si todo lo que tienes es una UILabel y una UIImageView, pero ¿qué pasa si quiero hacer algo más complejo? ¿Qué pasa si quiero que cada "página" tenga como 14 variables diferentes, un button en cada "página" que haga algo diferente según la página en la que se encuentre …

Entonces, mi pregunta es esta (quizás esto no sea inteligente para hacer en primer lugar): ¿Hay algún modo de codificarlo así que cuando el usuario cambia la página, carga un controller diferente que tiene su propio file .Xib y vista ya creada en el generador de interfaces?

Gracias

Sí hay. Utilizaría un UIPageViewController . UIPageViewController tiene origen de datos y delega methods que se UIPageViewController dependiendo de si el usuario desliza hacia la izquierda o hacia la derecha. Básicamente dice "Hey, dame el UIViewController que debería mostrar antes o después de este UIViewController".

Aquí hay una muestra:

MyPageViewController.h :

 @interface MyPageViewController : UIPageViewController <UIPageViewControllerDataSource, UIPageViewControllerDelegate> @end 

MyPageViewController.m :

 #import "MyPageViewController.h" @implementation MyPageViewController - (id)init { self = [self initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; if (self) { self.dataSource = self; self.delegate = self; self.title = @"Some title"; // set the initial view controller [self setViewControllers:@[[[SomeViewController alloc] init]] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL]; } return self; } #pragma mark - UIPageViewController DataSource methods - (UIViewController *)pageViewController:(UIPageViewController *)pvc viewControllerBeforeViewController:(UIViewController *)vc { // here you put some logic to determine which view controller to return. // You either init the view controller here or return one that you are holding on to // in a variable or array or something. // When you are "at the end", return nil return nil; } - (UIViewController *)pageViewController:(UIPageViewController *)pvc viewControllerAfterViewController:(UIViewController *)vc { // here you put some logic to determine which view controller to return. // You either init the view controller here or return one that you are holding on to // in a variable or array or something. // When you are "at the end", return nil return nil; } @end 

¡Eso es!