2 Stimmen

Wie Rotation für einen UIViewController, die nicht auf der Oberseite des UINavigationController-Stapels ist zu behandeln?

Ich habe einen Root UIViewController (VC1), innerhalb eines UINavigationControllers, der Rotation durch Anpassen seiner Ansichten/Unteransichten Frames manuell in der willRotateToInterfaceOrientation: Methode behandelt. Die Drehung funktioniert gut, wenn der Root UIViewController der aktive View-Controller ist, also oben auf dem Stapel.

Das Problem tritt auf, wenn ich einen anderen UIViewController (VC2) auf den NavigationController schiebe. Ich drehe dann VC2, was gut funktioniert. Allerdings, wenn ich VC2 pop das Problem ist, dass VC1 nicht auf die richtige Ausrichtung gedreht hat, noch tut seine willRotateToInterfaceOrientation: Methode aufgerufen werden? Die Methode shouldAutorotateToInterfaceOrientation: in VC1 wird aufgerufen, aber das war's.

Meine Frage ist dann, wie soll ich sicherstellen, dass meine UIViewController VC1 für die aktuelle Ausrichtung für diese Art von Situation aktualisiert wurde?

1voto

freespace Punkte 16029

Ich löse das Problem, indem ich Folgendes überprüfe viewWillAppear: um zu sehen, ob die Ausrichtung jetzt anders ist als zum Zeitpunkt viewDidDisappear genannt wurde. Wenn ja, rufe ich den Code für das Layout der Ansicht auf.

Um diesen Ansatz zu übernehmen, müssen Sie zunächst den Code, der für das Layout der Ansicht verantwortlich ist, in etwas wie _layoutViews können Sie es einfach wie gewünscht in viewWillAppear als auch in willRotateToInterfaceOrientation: .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X