iPhone: descartar modalViewControllerAnimated anterior: sí, luego explotar un nuevo modalViewControllerAnimated: Sí - Fail

StackOverflow https://stackoverflow.com/questions/4788131

Pregunta

Tengo una ventana principal que abarca un controlador de vista modal. Cuando se hace en este controlador de vista modal, regresa a la ventana principal y luego se descarta. Luego, las ventanas principales explotan un nuevo controlador de vista modal con animado = sí.

El problema es que la llamada de despedida que se realiza dentro del primer modalviewController se aplica a ambos y al segundo controller nunca se muestra.

Poner el primer despedido antes o después de la llamada de los padres no cambia nada. Si se establece por primera vez con animate = no, todo funciona bien. Pero necesito la animación.

Main.m

- (void) entry {

    FirstController *nextWindow = [[FirstController alloc] initWithNibName:@"theNIB" bundle:nil];

    nextWindow.caller = self;

    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:nextWindow];

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

    [nextWindow release];
    [navController release];
}


- (void) thingsDoneInFirstModalController:(OBJECT)returnValue retval2:(OBJECT2)returnValue2 {
    [self display2ndController];
}

- (void) display2ndController {

    SecondController *nextWindow;

    nextWindow = [[SecondController alloc] initWithNibName:@"NIB2" bundle:nil];

    UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:nextWindow];
    [self.navigationController presentModalViewController:navController animated:YES];
    [navController release];
    [nextWindow release];
}

1st ModalViewController.m

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    [self.navigationController dismissModalViewControllerAnimated:YES];
    [self.caller thingsDoneInFirstModalController:theResult retval2:someMoreResult];
}

¿Qué puedo hacer? No quiero atrapar nada a la vista ... Disputar ...

¿Por qué descarta a los Colides, ya que no se les llama del mismo controlador de navegación?

¿Fue útil?

Solución

La razón es probablemente la animación cuando la descarta. Intente mostrar la segunda ventana modal con el performSelector:withObject:afterDelay:, un método heredado de NSObject. Referencia aquí.

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