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.

InformationsquelleAutor Sam | 2011-01-10
Schreibe einen Kommentar