Ich habe eine UIViewController
Unterklasse namens NewsViewController
, die eine Completion-Block-Eigenschaft hat, die von einer Schaltfläche Aktion aufgerufen wird. Die Steuerung ist so aufgebaut und in einer anderen Ansicht-Controller wie folgt dargestellt:disneyViewControllerAnimated funktioniert nicht in iOS 9
newsViewController.completionBlock = ^{
[self dismissViewControllerAnimated:YES completion:nil];
};
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:newsViewController];
[self presentViewController:navigationController animated:YES completion:nil];
In iOS 10 das alles funktioniert gut, aber in iOS 9 die Ansicht wird abgewiesen nicht zu werden. Wenn ich dort einen Haltepunkt setze, wird er getroffen.
habe ich versucht, die folgenden, ohne Erfolg:
es aus dem Haupt Thread aufgerufen (synchron und asynchron)
habe ich versucht, es GCD Verwendung wie folgt aus:
dispatch_async(dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:YES completion:nil];
});
Ich habe es auch versucht, indem ich den Entlassungsaufruf in eine Methode setzte und dann
[self performSelectorOnMainThread:@selector(dismissModalView) withObject:nil waitUntilDone:NO];
anruft
Ich eigentlich nicht das Problem ist der Thread seit ein Anruf an [NSThread isMainThread]
aus dem Abschlussblock gibt JA zurück.
aufrufen es mit einer Verzögerung
[self performSelector:@selector(dismissModalView) withObject:nil afterDelay:0.1];
auf einem anderen View-Controller aufrufen entlassen
habe ich versucht, es auf navigationController
, self.presentedViewController
und self.presentingViewController
aufrufen.
Aufruf direkt aus NewsViewController entlassen
In der Button-Aktion, wo der Abschluss-Block genannt wurde es [self dismissViewControllerAnimated:YES completion:nil]
direkt aufgerufen.
Btw. nur zum Spaß habe ich versucht, die Kündigungs-Methode aus dem Completion-Block der presentViewController
Methode aufzurufen und dort wurde es entlassen.
Ich bin mir nicht sicher, was ich damit erreichen würde. Mit Ihrem Code würde ich den 'NewsViewController' erneut nach dem Ablehnen präsentieren. Dies ist nicht das, was ich überhaupt will und es würde mein Problem sowieso nicht lösen (nicht in der Lage zu sein, in erster Linie zu entlassen). – pajevic
Sie müssen es nach Abschluss ablehnen, dann nur entlassen, ohne etwas im Abschlussblock. –
Ihr Code würde mir einen unendlichen Zyklus geben. Im Completion-Block präsentieren Sie den gleichen View-Controller erneut. Wenn die Ansicht also geschlossen wird, wird sie erneut angezeigt. – pajevic