Erkennen, wenn sowohl der Master- als auch der Detailansicht-Controller auf dem Bildschirm sind?

8

Ich habe ein UISplitViewController mit einem Universal Storyboard in Xcode 6 implementiert. UISplitViewController wird jetzt auf iPhone mit iOS 8 unterstützt, und standardmäßig wird immer nur ein View-Controller auf dem Bildschirm angezeigt.

Ich muss wissen, wenn sowohl der Master- als auch der Detailansicht-Controller beide auf dem Bildschirm (iPad) sind. Ich muss die Disclosure-Indikatoren von UITableViewCell s entfernen, wenn beide auf dem Bildschirm sind - render sie nur, wenn nur der Master-View-Controller auf dem Bildschirm (iPhone) ist, genau wie die Einstellungen app.

Ich könnte das Gerät einfach erkennen und nur hinzufügen, wenn es ein iPhone ist, aber das ist nicht zu empfehlen. Es ist möglich, dass ein neues Gerät nur einen View-Controller anzeigt und sich nicht als Telefon identifiziert. Ein weiterer Gedanke wäre, zu erkennen, ob self.splitViewController nil ist, aber das wird nicht funktionieren, weil es nicht nil auf iPhone oder iPad ist, weil es tatsächlich in einem Split-View-Controller auf dem iPhone ist.

Ist es möglich, zu erkennen, wenn sowohl der Master- als auch der Detailansicht-Controller gleichzeitig auf dem Bildschirm angezeigt werden?

    
Joey 21.08.2014, 21:39
quelle

2 Antworten

14

UISplitViewController

@property(nonatomic, readonly, getter=isCollapsed) BOOL collapsed

  

Diese Eigenschaft wird auf YES gesetzt, wenn der Inhalt des Split-View-Controllers ist   semantisch zu einem einzigen Container zusammengelegt. Kollabieren passiert   wenn der Split-View-Controller von einem horizontal regulär wechselt   zu einer horizontal kompakten Umgebung. Nachdem es zusammengebrochen ist,   Der Split-View-Controller meldet nur eine untergeordnete Ansicht   Controller in seiner ViewControllers-Eigenschaft. Der andere Ansichtscontroller   wird mit Hilfe von in den Inhalt des anderen View-Controllers kollabiert   das Delegate-Objekt oder vorübergehend verworfen. Wenn es zusammenbrach, das   Die Eigenschaft "displayMode" hat keinen Einfluss auf das Erscheinungsbild der geteilten Ansicht   Controller-Schnittstelle.

     

Der Wert dieser Eigenschaft ist NEIN, wenn der Split-View-Controller vorhanden ist   in der Lage, beide Kind View Controller gleichzeitig anzuzeigen   Zeit, , auch wenn es sie im Moment nicht zeigt . In diesem   Erweiterter Modus, die Konfiguration des untergeordneten View-Controllers des untergeordneten Elements   View-Controller wird durch die Eigenschaft displayMode bestimmt. Im   Darüber hinaus enthält die ViewControllers-Eigenschaft sowohl das primäre als auch das   Secondary View Controller.

     

Bei einem Übergang von einer erweiterten zu einer reduzierten Schnittstelle der Wert   von dieser Eigenschaft ist NEIN, bis der Kollaps-Übergang beendet ist   und alle relevanten Delegiertenmethoden wurden aufgerufen. Ähnlich,   Beim Übergang zurück zu einer erweiterten Schnittstelle ist der Wert YES   bis der Übergang beendet ist.

aus der Klassenreferenz.

Danke an Frederik A. Winkelsdorf:

  

Es sollte beachtet werden, dass .collapsed auch false meldet, wenn a   DetailViewController wird gezoomt, um den gesamten Bildschirm abzudecken. Wenn du wirklich   Möchten Sie wissen, ob beide sichtbar sind, prüfen Sie neben der Eigenschaft .collapsed   für splitViewController.displayMode ==   UISplitViewControllerDisplayMode.AllVisible. Ich fand es nützlich, wenn   Umgang mit iPhone 6 Plus Landscape Layouts.

    
Schemetrical 22.08.2014, 02:53
quelle
0

Auf diese Weise können Sie Displaymode auf UISplitViewController überprüfen

%Vor%     
Nagarjun 19.05.2017 12:38
quelle