2012-08-09 17 views
5

, así que estoy tratando de crear un lector tipo ibooks y necesito actualizar el contenido del UIPageViewController dinámicamente después de obtener los datos del servicio web. Por una larga serie de razones, tengo que crear una instancia al principio y luego actualizarla cuando lleguen los datos.Recarga dinámicamente UIPageViewController después de que dataSource haya cambiado

estoy creando de esta manera:

NSDictionary *options = 
[NSDictionary dictionaryWithObject: 
[NSNumber numberWithInteger:UIPageViewControllerSpineLocationMin] 
          forKey: UIPageViewControllerOptionSpineLocationKey]; 

self.pageController = [[UIPageViewController alloc] 
         initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl 
         navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal 
         options: options]; 

self.pageController.dataSource = self; 
self.pageController.delegate = self; 

[[self.pageController view] setFrame:[[self view] bounds]]; 

MovellaContentViewController *initialViewController = [self viewControllerAtIndex:0]; 

self.controllers = [NSArray arrayWithObject:initialViewController]; 

[self.pageController setViewControllers:self.controllers 
           direction:UIPageViewControllerNavigationDirectionForward 
           animated:NO 
          completion:nil]; 

[self addChildViewController:self.pageController]; 
[[self view] addSubview:[self.pageController view]]; 
[self.pageController didMoveToParentViewController:self]; 

y luego me acaba de establecer self.controllers = newControllersArray;

Busco algo así como reloadData para un UITableViewController, ¿existe tal cosa para UIPageViewController?

Respuesta

1

El principal problema w como que la vista web estaba interceptando todos los toques del usuario y, por lo tanto, UiPageViewController no llamaba a los métodos de delegado. Una vez configurada la vista web para ignorar los eventos táctiles del usuario, todo comenzó a funcionar correctamente.

11

usted tiene que enviar setViewControllers: Dirección: animada: ejecución: a la PageController nuevo y darle la primera vista del controlador de pantalla:

[self.pageController setViewControllers:[NSArray arrayWithObject: 
              [self viewControllerAtIndex:0] 
             ] 
           direction:UIPageViewControllerNavigationDirectionForward 
           animated:NO 
          completion:nil]; 

Si viewControllerAtIndex: no acceder self.controllers como yo en un principio supuse, probablemente debería ser más bien

[self.pageController setViewControllers:[NSArray arrayWithObject: 
              [self.controllers objectAtIndex:0] 
             ] 
           direction:UIPageViewControllerNavigationDirectionForward 
           animated:NO 
          completion:nil]; 

lugar

+0

Probado, mismo resultado. – valeriodidonato

+0

does viewControllerAtIndex: acceder a los elementos de self.controllers o algo más? –

Cuestiones relacionadas