Ich verwende einen UISplitViewController
Inneren eines UITabBarController
mit einem einfachen UIViewController
im Master-Fenster des Split-Ansicht und einer UINavigationController
im Detailbereich, der sich UIViewController
Vanille enthält.UISplitViewController Delegatmethoden nicht
Ich bin mir bewusst, dass Apple geteilte Ansichten nur auf der Stammebene empfehlen, aber ich habe andere Anwendungen gesehen (zB Amazon- "Wunschliste" Registerkarte), die geteilte Ansichten in Tabs verwenden, so bin ich mir sicher, dass es möglich ist .
Mein Problem ist, dass die Delegate Methoden der Split-Ansicht, dh. die in UISplitViewControllerDelegate
werden nicht aufgerufen, was verhindert, dass ich mein Pop-over-Menü erstelle, wenn ich in den Portrait-Modus wechsle.
Die Methoden in Frage, 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;
Die UISplitViewController
tut die Rotation Benachrichtigungen zu erhalten.
kann ich die willShowViewController Methode aufgerufen werden, wenn ich die Statusleiste Orientierung Landschaft rechts zwingen (oder links) zu Beginn der App zu starten, mit
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight];
jedoch der willHideViewController
doesn werde nicht angerufen. Und ich möchte nicht, dass die App im Querformat startet. Wenn ich dasselbe mache, aber zum Porträt zwinge, erhalte ich die Rückrufe nicht.
Ich verstehe nicht, warum der Split-View-Controller seine Delegate-Methoden nicht aufruft, wenn er sich ansonsten korrekt verhält. Diese Verfahren sollen von ihrem Methoden-
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
intern aufgerufen werden, und wenn ich in diesem Haltepunkt kann ich überprüfen, ob die Delegierten festgelegt ist und dass es noch am Leben.
Den ganzen Tag festgefahren! Alles andere funktioniert gut und ich bin sehr zufrieden, dass die Splitview/Tabbar/Navbar-Kombination gut funktioniert. Ich brauche nur diese Benachrichtigungen.
Sollte ich sie vielleicht nur manuell aufrufen, wenn ich rotiere? Es scheint sehr falsch, wenn der 'UISplitViewController' dies tun sollte.
Hallo, Würde es Ihnen etwas ausmachen, Ihre Lösung ein wenig weiter zu erarbeiten? Ich habe gerade das gleiche Problem. Ich habe 1 Tabcontroller, der eine Splitview in 3 Tabs hat. Ich fügte die Detailansicht in jeder Splitview zu einem eigenen untergeordneten Navigationscontroller hinzu, der die Splitview delegiert. Dies funktioniert einwandfrei für die aktuell sichtbare Registerkarte, aber nicht für die anderen. Also, wenn ich meine Ansicht rotiere und die Registerkarte ändere, sieht alles durcheinander, bis ich es rotiere. Wieder nur für die sichtbare Sicht. –
hmm Entschuldigung, ich bin mir nicht sicher .. Ich bin sicher, dass ich irgendwo einen Post gesehen habe, der darauf hingewiesen hat, dass das Wechseln zwischen Splitview Tabs und Rotieren Probleme verursacht und dass der Splitviwe immer auf Fensterebene sein sollte - nicht einmal unter einem Registerkarte Controller. Was von den Dokumenten unterstützt wird, denke ich. Ich nehme tatsächlich den Weg der Erstellung meiner eigenen SplitView von Grund auf neu, wie ich horizontale Splits benötigen – Sam
Anstatt von Grund auf neu zu versuchen, versuchen Sie dies - http://mattgemamm.com/2010/07/31/mgsplitviewcontroller-for-ipad – Viraj