iPhone - Respingendo precedente ModalViewController Animated: sì allora schioccare una nuova ModalViewController Animated: SI - fallire

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

Domanda

Ho una finestra principale che si apre un controller di vista modale. Una volta fatto in questo controller di vista modale, si ritorna alla finestra principale poi si congeda. Poi le principali finestre schiocca un nuovo controller di vista modale con animazione = YES.

Il problema è che la chiamata che viene fatto all'interno del primo modalviewcontroller vale per entrambi e SecondController non viene mai mostrata respingere.

Mettere il primo respingere prima o dopo la chiamata genitore non cambia nulla. Se il primo licenziamento è impostato wih animato = NO, tutto funziona bene. Ma ho bisogno l'animazione.

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];
}

1 ° ModalViewController.m

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

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

Che cosa posso fare? Io non voglio niente catture in vista .... disapear ...

Perché il colides respingere in quanto non vengono chiamati dallo stesso controller di navigazione?

È stato utile?

Soluzione

Il motivo è probabile che l'animazione quando respingere esso. Prova che mostra la seconda finestra modale utilizzando il performSelector:withObject:afterDelay:, un metodo ereditato da NSObject. Riferimento qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top