He descargado el código de muestra de PageControl de Apple. Es un proyecto con un UIPageControl
. Lo he cambiado para que el UIScrollView
tenga diferentes vistas. Para cada vista que deseo agregar, creé un UINavigationController
con un rootViewController
como una subclase de UIViewController
o UITableViewController
. Luego agregué en el UIScrollView
, la vista del navigationController
.¿Por qué el marco principal no se mantiene del mismo tamaño después de cerrar ViewControllerAnimated?
Digamos que estoy en la primera vista, ahora. Quiero mostrar un controlador de vista modal. Cuando lo descarto, el controlador de vista principal (HomeViewController
en mi ejemplo) está en pantalla completa, en lugar del tamaño que tenía antes, que mostraría el control de página en la parte inferior. La única manera en que puedo hacer que funcione correctamente es redimensionando el marco después del descarte, pero esa es una mala experiencia de usuario, porque se invoca después de que se muestra el controlador de vista principal. ¿Alguna idea sobre cómo evitar el tamaño del marco HomeViewController
cuando se descarta un controlador de vista modal?
-(void)dismissMVC:(id)sender {
CGRect frame = self.view.frame;
[self dismissViewControllerAnimated:YES completion:^{
self.view.frame = frame;
}];
}
- (void)loadScrollViewWithPage:(int)page
{
if (page < 0)
return;
if (page >= kNumberOfPages)
return;
// replace the placeholder if necessary
switch (page) {
case Home:
{
HomeViewController *controller = [viewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null])
{
controller = [[HomeViewController alloc] initWithPageNumber:page];
[viewControllers replaceObjectAtIndex:page withObject:controller];
[controller release];
}
// add the controller's view to the scroll view
if (controller.view.superview == nil)
{
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
navController.navigationBar.barStyle = UIBarStyleBlack;
[navController setNavigationBarHidden:YES];
CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * page;
frame.origin.y = 20;
frame.size.height = frame.size.height - 20;
navController.view.frame = frame;
controller.view.frame = frame;
[controller setNavController:navController];
[scrollView addSubview:navController.view];
[navController release];
}
break;
}
}
}
¿alguna vez descubrió por qué esto es cierto? – aloo
@aloo Ha pasado casi un año, así que no recuerdo cómo solucioné esto. ¿Estás teniendo el mismo problema? – Adriana
sí experimentándolo pero no puedo reproducirlo en un pequeño proyecto de prueba – aloo