UISplitViewController delegate-Methoden nicht aufgerufen
Ich bin mit einem UISplitViewController
innerhalb einer UITabBarController
mit einem einfachen UIViewController
im master-Bereich der geteilten Ansicht und eine UINavigationController
im detail-Bereich, der sich enthält eine Vanille -UIViewController
.
Ich bin mir bewusst, dass Apple raten, zu verwenden geteilte Ansichten auf der root-Ebene nur, aber ich habe gesehen, andere Anwendungen (z.B. Amazon - "Wunschliste" - tab), dass die Verwendung geteilten Ansichten in tabs, so dass ich bin sicher, es ist möglich.
Mein problem ist, dass die delegate-Methoden des split-Ansicht, dh. diejenigen, die in UISplitViewControllerDelegate
nicht genannt, bekommen, die mich daran hindert, meinen pop-over-Menü beim wechseln in den Portrait-Modus.
Methoden in Frage zu stellen, sind die folgenden -
//Called when a button should be added to a toolbar for a hidden view controller
- (void)splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc;
//Called when the view is shown again in the split view, invalidating the button and popover controller
- (void)splitViewController: (UISplitViewController*)svc willShowViewController:(UIViewController *)aViewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem;
//Called when the view controller is shown in a popover so the delegate can take action like hiding other popovers.
- (void)splitViewController: (UISplitViewController*)svc popoverController: (UIPopoverController*)pc willPresentViewController:(UIViewController *)aViewController;
Den UISplitViewController
hat erhalten die rotation Benachrichtigungen.
Ich kann das willShowViewController Methode aufgerufen werden, wenn ich die Kraft der Statusleiste die Ausrichtung auf Querformat rechts (oder Links) an den Anfang der app-Start, mit
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
Jedoch die willHideViewController
nicht genannt. Und ich will nicht, um zu erzwingen, die app zu starten in der Landschaft. Wenn ich das gleiche tun, aber zwingen Sie es auf hochformat habe ich nicht erhalten, die Rückrufe.
Ich verstehe nicht, warum die split-view-controller ist nicht der Aufruf der delegate-Methoden, wenn es sonst richtig verhält. Diese Methoden müssen aufgerufen werden, von Ihrer Methode-
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
intern, und wenn ich den Haltepunkt in diese, kann ich überprüfen, dass die Delegierten und es ist immer noch lebendig.
Stecken, auf das den ganzen Tag! Alles andere funktioniert Super und ich bin sehr froh, dass die splitview /tabbar /navbar Kombination funktioniert gut. Brauche ich nur diese Meldungen.
Sollte ich vielleicht nennen Sie einfach manuell, wenn ich drehen? Scheint sehr falsch, wenn der "UISplitViewController' dies tun sollte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gelöst, es muss entweder auf root-Ebene oder eine direkte Untersicht einer tabBar, die müssen auch auf der root-Ebene. Ärgerlich!
Versuchen Sie zunächst, um zu sehen, wenn Sie die richtige Einstellung Delegierten.
z.B., können sagen, Sie erstellt drei Controllern,
Sie implementiert die delegate-Protokoll in der Detailansicht, so dass, wenn sich die Orientierung ändert, detail-Ansicht sollte in der Lage sein, um eine Schaltfläche in der Symbolleiste.
Damit splitView, um diese Funktion aufrufen von Delegaten, die Sie benötigen, um die Delegierten selbst.
So irgendwo, wenn Sie fehlen, ist der folgende Aufruf,
Detailansicht wird nie benachrichtigt zu werden, der Orientierung, änderungen etc. Das ist zumindest das, wo ich steckte.
Ich wie folgt Verfahren zum senden einer Nachricht von der master-UIViewController, um die Details UIViewController. Irgendwo in den master-Implementierung:
Dies ist von Paul Hegarty ' s Fall 2011 Stanford iTunesU iPad-und iPhone-Anwendung Entwicklung natürlich.