tutorial page control ios objective-c uipageviewcontroller

ios - tutorial - Uso de View Controller desde el guión gráfico mediante programación en un controlador de Page View



swift page control tutorial (3)

Rápido

En caso de que desee UIViewController desde el objeto UIViewController .

guard let vc = storyboard?.instantiateViewController(withIdentifier: "nameVC") else { return } // add to current view view.addSubview(vc.view)

Tengo una aplicación con un guión gráfico. Estoy usando varios controladores de vista con segmentos para elegir de una vista de tabla según el elemento seleccionado. Quiero tener un controlador de vista de página en el que las páginas serán uno o más controladores de vista desde el guión gráfico, incluso repitiéndolos. Estoy intentando init el controlador de vista de página de esta manera: .... self.dataSource = self;

UIViewController *initialViewController =[self viewControllerAtIndex:current]; NSArray *viewControllers = [NSArray arrayWithObject:initialViewController]; [self setViewControllers:viewControllers direction:UIPageViewControllerNavigationOrientationHorizontal animated:NO completion:nil]; .... - (UIViewController *)viewControllerAtIndex:(NSUInteger)index { if ((descriptions.count == 0) || (index >= descriptions.count)) { return nil; } current=index; // Create a new view controller and pass suitable data. NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; Description *description=[DBCompany getDescriptionById:language descriptionId:[[descriptions objectAtIndex:index] integerValue]]; UIViewController *viewController=nil; if(description.frame==100){ viewController=[[Company100ViewController alloc] init]; ((Company100ViewController*)viewController).companyId = companyId; } return viewController; } - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController { if ((descriptions.count == 0) || (current-1 < 0)) { return nil; } return [self viewControllerAtIndex:current-1]; } - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController { if ((descriptions.count == 0) || (current >= descriptions.count)) { return nil; } return [self viewControllerAtIndex:current+1]; }

Sin embargo el viewcontroller aparece en negro. Creo que es porque estoy agregando la clase UIviewcontroller pero no la UIviewcontroller a ninguna vista, XIB, en mi caso con el guión gráfico.

¿Cómo puedo usar el controlador de vista diferente del guión gráfico para usar en un controlador de vista de página?


Si lo hace viewController = [[Company100ViewController alloc] init] entonces sí, no es un controlador asociado a un guión gráfico o un XIB. Para cargar el controlador con un XIB tienes que hacer lo siguiente:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; Company100ViewController * vc = (Company100ViewController *)[sb instantiateViewControllerWithIdentifier:@"vc-identifier"];

En el guión gráfico, asegúrese de configurar la identificación del controlador de vista en vc-identifier; Cualquier identificador que elijas.


Swift 3

let sb = UIStoryboard(name: "MainStoryboard", bundle: nil) let vc = sb.instantiateViewController(withIdentifier: "vc-identifier")