2011-01-07 17 views
3

Ich versuche eine SplitView basierte iPad App zu entwickeln, die das Split Interface in jeder Orientierung anzeigt. Ich habe versucht, Unterklasse der UISplitViewController-Klasse wie in this Tutorial angegeben, aber es funktioniert nicht. Ich habe versucht, eine Kategorie zu erstellen, um _hidesMasterViewInPortrait = (hidden) ? 0 : 1; zu setzen, wie in einem der Kommentare im obigen Blog vorgeschlagen, aber nichts hat funktioniert.Erzwingen einer iPad App, um SplitView auch im Hochformat anzuzeigen (Wie die Einstellungen iPad App)

Kann mir jemand helfen, einen Ausweg zu finden, ohne Rahmen oder Klassen Dritter zu verwenden?

+0

Hallo, gibt es eine sehr einfache und effektive Art und Weise, dass: [splitViewController setHidesMasterViewInPortrait: NO]; Aber es ist eine undokumentierte API, das bedeutet, dass Apple es uns nicht erlaubt, es zu benutzen. Kann es nicht fassen! –

Antwort

0

Ich habe es nie geschafft, den SPlitViewController dazu zu zwingen, aber da Sie Controller für beide Teile erstellen müssen, können Sie diese Controller einfach wiederverwenden, um den Inhalt so darzustellen, wie Sie es wollen.

+0

Ich denke, das wäre die am besten geeignete Option angesichts Jiloucs Kommentar – Vin

2

Ich bin nicht sicher, dass es möglich ist, mit Standard SplitViewController, aber Sie können benutzerdefinierte ein von

https://github.com/mattgemmell/MGSplitViewController

+0

Vielen Dank für Ihre Antwort, aber wie ich in meinem Beitrag sagte, ich versuche, eine Lösung zu finden, ohne Verwendung von Drittanbieter-Klassen. Vielleicht, wenn du das Projekt in dem gegebenen Link geworfen hast, könntest du mir helfen, wie sie es machen! – Vin

+1

Es gibt keinen offiziellen Weg dies zu tun und die Einstellung '_hidesMasterViewInPortrait' führt zu einer App-Ablehnung IMHO (da es sich eindeutig um Privates handelt). – Jilouc

+0

+1 für diese Information. Ich denke, ich würde versuchen, VdesmedT Antwort – Vin

3

verwenden Was Sie klingt wie Apples App Einstellungen beschreibt (auf dem iPad). Meine Intuition wäre, dass dies kein UISplitView ist. Es ist nur eine Ansicht mit zwei Tabellenansichten. Korrigieren Sie das Layout manuell, wenn sich das Gerät dreht. Mit anderen Worten, wenn Sie nicht möchten, was ein UISplitView macht, dann haben Sie überhaupt kein UISplitView.

EDIT 19.12.2011: In iOS 5 ist das Problem grundsätzlich gelöst, da Sie jetzt Ihren eigenen Container-View-Controller definieren können, außerdem können Sie die Entlassung der linken Ansicht in einer Split-Ansicht verhindern.

1

Sie UISplitViewController Unterklasse kann, dann überschreiben folgende Methode:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval) duration 
0

hallo mein erster Beitrag und ich hoffe, zu helfen:

hier so, wie es

funktioniert, ist
[splitViewController setHidesMasterViewInPortrait:NO]; 
0

Sie können nicht habe den 'splitViewController' von Apple so verhalten (und im App Store bekommen). Sie müssten Ihren eigenen Container-View-Controller schreiben. See Apple' docs

13

Fügen Sie in der ViewController-Klasse, die das UISplitViewControllerDelegate-Protokoll (normalerweise den DetailViewController) implementiert, den folgenden Code hinzu.

- (BOOL) splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation { 
    return NO; 
} 

Nach dem Docs, dies ist seit iOS 5 zur Verfügung

es in Aktion zu sehen:
-open Xcode.
- Erstellen Sie eine neue Master/Detail-App.
- Fügen Sie den obigen Code zum DetailViewController
-Run im iPad-Simulator hinzu.

In Ihrem eigenen Projekt möchten Sie der viewDidLoad-Methode des detailViewControllers die folgende Zeile hinzufügen.

self.splitViewController.delegate = self; 
+0

zu implementieren Beachten Sie, dass dies in iOS 8 veraltet ist. – Joey

+2

Für iOS 8, setzen Sie den PreferredDisplayMode von SplitViewController AllVisible –

0
you just need to add this delegate method to your detail view manager 

    - (BOOL)splitViewController:(UISplitViewController *)svc 
     shouldHideViewController:(UIViewController *)vc 
        inOrientation:(UIInterfaceOrientation)orientation 
    { 
     // Hide split view in portrait mode 
     //return UIInterfaceOrientationIsPortrait(orientation); 

     // Show Split view in portrait mode 
     return NO; 
    } 

//vKj 
11

In iOS8 (Swift) verwenden:

splitViewController.preferredDisplayMode = UISplitViewControllerDisplayMode.AllVisible 
+0

Dies sollte die akzeptierte Antwort sein! Sehr hilfreich –

+0

umbenannt in 'UISplitViewControllerDisplayMode.allVisible' in Swift 4.0 – Hadi

Verwandte Themen