5

Próbuję odwołać kontroler widok jak to:dismissViewControllerAnimated blok ukończenie nie nazywa

[composeViewController dismissViewControllerAnimated:YES completion:^{ 

    NSLog(@"Hello"); // Never outputted 
}]; 

Kontroler widoku zostaje odrzucona, ale z jakiegoś powodu nigdy blok Zakończenie nazywa.

Nigdy nie miałem żadnych problemów z blokiem zakończenia, który nie był wywoływany z innymi kontrolerami widoku.

Ten kontroler widoku jest jednak "specjalny", ponieważ został dodany jako kontroler widoku podrzędnego (z którym nie pracowałem wcześniej w mojej aplikacji). Czy narzuca to jakieś skutki uboczne, dlaczego blok zakończenia nie jest wywoływany?

To dodaje tak:

UIViewController *rootVC = [UIApplication sharedApplication].delegate.window.rootViewController; 
[rootVC addChildViewController:self]; 
[rootVC.view addSubview:self.view]; 
[self didMoveToParentViewController:rootVC]; 
+0

'addChildViewController:' faktycznie popycha ten kontroler widok na stosie nawigacji. Musisz go wyskoczyć zanim ten blok może wystrzelić – CodaFi

+0

Próbowałem zrobić '[composeViewController removeFromParentViewController];' (Widzę, że został usunięty z 'childViewControllers' własności' rootViewController') przed wywołaniem 'dismiss ...', ale zakończenie blok wciąż nie jest wywoływany. –

+0

po stosie nawigacji, a następnie. – CodaFi

Odpowiedz

1

dowiedział się, co było zagadnienie: 3rd kontroler widok strona używałem już nadpisane - (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion bez faktycznie dzwoni completion()

0

Jeśli przedstawi modal, to kontroler widoku, który pojawia się komunikat (lub szczyt w hierarchii, ja nadal nie rozumiem), który obsługuje cały proces dodania dziecka vc zamiana widok itp. Wydaje się, że robisz mieszankę dwóch technik. Po prostu użyj jednego.
Prezentujemy go przy użyciu reklamy odrzuć za pomocą metody dismissViewController, aby kontroler widoku zarządzał wszystkim.