2012-04-11 24 views
6

Estoy buscando utilizar el UIPageViewController con el guión gráfico de Xcode. El único ejemplo que pude encontrar fue this tutorial sobre cómo implementar UIPageViewcontroller usando archivos xib separados.utilizando el UIPageViewController en un guión gráfico

Sin embargo, en este tutorial, el UIPageViewController se crea una instancia mediante programación dentro de una clase que se extiende a UIViewController. Esto hace que sea complicado traducir a cómo interpreta el storyboard el UIPageViewcontroller (que es como una instancia en sí misma).

Cualquier ayuda sobre cómo crear un funcionamiento UIPageViewController con el guión gráfico de Xcode será muy apreciada.

ACTUALIZACIÓN: Pude resolver este problema haciendo un nuevo proyecto en Xcode utilizando la plantilla del controlador de página predeterminado. Usó el guión gráfico y fue fácil de seguir.

+0

Me alegra saber que su problema está resuelto; debe publicar su solución como respuesta (y acepte la respuesta mañana) para que otras personas que buscan ayuda sobre el tema puedan encontrarla. – rickster

Respuesta

8

ACTUALIZACIÓN: Pude resolver este problema realizando un nuevo proyecto en xcode utilizando la plantilla predeterminada del controlador de página. Usó el guión gráfico y fue fácil de seguir.

+1

El código predeterminado de Apple instancia el UIPageViewController programáticamente también ... –

7

La configuración del Proyecto Xcode para ser un PageViewController es una forma de lograr esto, sin embargo, si desea incluir un PageViewController dentro de un guión gráfico ya existente, puede hacerlo también.

Si arrastra y suelta una escena PageViewController en su guión gráfico y establece un segue, puede presionar a ese PageViewController. Sin embargo, parece que hay algunos errores en el guión gráfico para configurar PageViewController correctamente, por ejemplo, no se puede conectar el delegado y el origen de datos.

Una manera fácil de evitar esto es simplemente conectar el delegado/fuente de datos en el método init:

- (instancetype) initWithCoder:(NSCoder *)aDecoder 
{ 
    if(self = [super initWithCoder:aDecoder]) 
    { 
     self.delegate = self; 
     self.dataSource = self; 
    } 
    return self; 
} 

Esto hará que sus métodos de delegado y el origen de datos para ser llamado correctamente, asumiendo por supuesto desea que la fuente de datos y delega para ser el PageViewController. Una vez que esté configurado, deberá asegurarse de que haya un controlador de vista cuando se cargue la vista. Usted puede hacer esto con el método de la clase setViewControllers PageViewController en su viewDidLoad:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self setViewControllers:@[sweetViewController] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) { 
     NSLog(@"Hooray I set my initial viewcontroller for my page view controller"); 
    }]; 
} 

Cuando se crea el PageViewController, se iniciará con su sweetViewController, y luego empezar a llamar a sus métodos de origen de datos y delegadas, según sea necesario.

0

Hay una manera fácil de hacerlo con Xcode 7. Tenga el ViewController que será su fuente de datos y delegue en una escena del guión gráfico, con su UIPageViewController incrustado en un ContainerView. Luego capture el UIPageViewController en el método PrepareForSegue de su ViewController.

p. Ej. en Swift:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if let identifier = segue.identifier where identifier == "yourPageVCIdentifier"{ 
     if let pageController = segue.destinationViewController as? UIPageViewController { 
      pageController.dataSource = self 
      pageController.delegate = self 
      self.pageVC = pageController 
     } 
    } 
} 
Cuestiones relacionadas