Pregunta

Estoy intentando cargar una vista temporal, deslizable, desde otro controlador de vista. Los controladores de vista de mi aplicación están estructurados:

Application > Tab Bar Controller > TabBarItem > View Controller

En este controlador de vista, tengo un botón que dispara con éxito un método para cargar la vista temporal:

- (IBAction)displayTimePickerViewForDayButton:(id)sender {

    NSLog(@"displayTimePickerViewForDayButton method entered.");

    // create the selector view controller and become the delegate
    WOTimePickerViewController *tpvc = [[WOTimePickerViewController alloc] initWithNibName:@"WOTimePickerView" bundle:nil];
    tpvc.delegate = self;
    tpvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self presentModalViewController:tpvc animated:YES];
    [tpvc release];
}

He verificado que mi WOTimePickerViewController regresa con éxito del método init pero la vista nunca entra en su método viewDidLoad.

Entonces, si miro la vista en IB, parece estar conectada a la "vista" de vc propiedad. Cuando ejecuto la vista en el simulador (desde IB) se muestra correctamente.

Cuando ejecuto la aplicación desde XCODE, puedo navegar a la vista, hacer clic en mi botón y aparece una pantalla en blanco (tenga en cuenta que este no es el fondo blanco de la vista que debería cargarse).

¿Fue útil?

Solución

Deberías hacerlo así ...

WOTimePickerViewController *tpvc = [[WOTimePickerViewController alloc] initWithNibName:@"WOTimePickerView" bundle:nil];
    tpvc.delegate = self;
UINavigationController *navCntrlr = [[UINavigationController alloc] initWithRootViewController:tpvc];
    navCntrlr.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

    [self.navigationController presentModalViewController:tpvc animated:YES];
    [tpvc release];

Pero lo importante que te estás perdiendo es que no lo estás haciendo bien.

deberías hacerlo así:

[self.navigationController presentModalViewController:tpvc animated:YES];

y cuando desee descartar el controlador modalView, debe hacerlo así:

[self.navigationController dismissModalViewControllerAnimated:YES];

Otros consejos

Creo que el modalTransitionStyle del controlador de vista se aplica a las vistas modales que se muestran desde ese controlador de vista. Entonces, si desea utilizar la transición UIModalTransitionStyleCoverVertical para mostrar su controlador modal, debe establecer la propiedad modalTransitionStyle en el controlador de vista principal (self), no en el nuevo.

No tengo experiencia en el uso del modalTransitionStyle, pero ¿quizás configurar esa propiedad antes de que se cargue la vista está causando algunos problemas? Intentaría comentarlo ...

Parece que todo está configurado correctamente en IB. Siempre que el Propietario de su archivo sea el controlador de la vista, y su salida de vista esté vinculada a la vista, debería ser bueno.

Espero que ayude,

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top