Die Entlassung modal-view-controller Ergebnisse in einen schwarzen Bildschirm

Dies ist meine Ansicht (controller) Hierarchie:

  • UITabBarController (als rootViewController von der app)
  • UINavigationController (als viewController für eine der tabBar tabs)
  • UIViewController (als rootViewController des UINavigationController)
  • UICollectionView (als Untersicht)
  • MyViewController.view (als überschrift des Abschnitts " anzeigen des UICollectionView)

Und so, ich brauche eine modale view controller aus MyViewController. Ich habe versucht, es zu tun mit

[self presentViewController:modalVC animated:YES completion:nil];

und obwohl es funktionierte, Xcode hat mich gewarnt, dass "Präsentieren view-Controller auf detached view-Controller wird abgeraten", und das zu Recht, denn die modalVC füllt nur die Sicht der Sammlung Sicht-header, die nicht full-screen, die ich bin nach.

Alle anderen Optionen, die ich ausprobiert 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];

präsentieren die modalVC full screen wie gewünscht, allerdings, wenn ich entlassen die modalVC durch den Aufruf

[self dismissViewControllerAnimated:YES completion:nil];

innerhalb modalVC selbst, modalVC in der Tat lehnt sich, aber ich bin Links mit einer schwarzen Bildschirm. Ein wenig debugging ergab, dass nach dem schließen modalVC, self.view.window.rootViewController wird nil.

Irgendeine Idee, warum dies passiert und wie man dieses Problem beheben?

BEARBEITEN

Dies ist eine iPhone-app. Der schwarze Bildschirm passiert, auf beiden iOS7 und iOS8. Auch, unten ist die Methode, wo ich einleiten 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 zeigen Sie Ihre Einrichtung von MyViewController und MyViewController.view?
  • Aaron, ich habe aktualisiert die Frage. Ist es das, was Ihr bittet? Ich mache das nicht zusätzliche setups in MyViewController selbst.
InformationsquelleAutor artooras | 2014-10-29
Schreibe einen Kommentar