Dies ist meine Ansicht (Controller) Hierarchie:Dismissing modal-View-Controller führt zu einem schwarzen Bildschirm
UITabBarController
(alsrootViewController
der app)UINavigationController
(alsviewController
für eine dertabBar
tabs)UIViewController
(wie dierootViewController
derUINavigationController
)UICollectionView
(als subview) 0.123.
MyViewController.view
(als Sektionskopf Ansicht derUICollectionView
)
Und so, ich brauche einen modalen View-Controller von MyViewController
zu präsentieren. Ich habe versucht, es zu tun mit
[self presentViewController:modalVC animated:YES completion:nil];
und obwohl es funktionierte, Xcode hatte mich gewarnt, dass „Presenting Ansicht-Controller auf getrennte Ansicht Controller wird abgeraten“, und das zu Recht, denn die modalVC nur die Ansicht des Kopfes Sammlung Ansicht füllen , das ist kein Vollbild, nach dem ich suche.
Alle anderen Optionen, die ich versucht habe:
UITabBarController *tb = (UITabBarController *)self.view.window.rootViewController;
[tb presentViewController:modalVC animated:YES completion:nil];
or...
UINavigationController *nc = (UINavigationController *)tb.selectedViewController;
[tb presentViewController:modalVC animated:YES completion:nil];
or...
UICustomViewController *cv = (UICustomViewController *)nc.topViewController;
[vc presentViewController:modalVC animated:YES completion:nil];
die modalVC Vollbild darzustellen, wie gewünscht, aber wenn ich die modalVC entlassen durch
[self dismissViewControllerAnimated:YES completion:nil];
aus modalVC Aufruf selbst, modalVC in der Tat entlässt sich selbst, aber ich bin mit einem schwarzen Bildschirm verlassen. Ein kleines Debugging ergab, dass self.view.window.rootViewController
nil
wird, nachdem ModalVC beendet wurde.
Irgendeine Idee, warum dies geschieht und wie man das löst?
EDIT
Dies ist ein iPhone-App. Der schwarze Bildschirm passiert sowohl auf iOS7 als auch auf iOS8. Auch unten ist die Methode, wo ich MyViewController
#pragma mark - UICollectionViewDelegate methods
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section {
self.myViewController = [[MyViewController alloc] initWithNibName:NSStringFromClass([MyViewController class]) bundle:nil];
return self.myViewController.view.frame.size;
}
Können Sie Ihr Setup von 'MyViewController' und' MyViewController.view' anzeigen? –
Aaron, ich habe die Frage aktualisiert. Haben Sie danach gefragt? Ich mache keine zusätzlichen Setups in 'MyViewController' selbst. – artooras