2017-02-14 1 views
0

Ich habe zwei View-Controller, die gleich sind, der einzige Unterschied ist zuerst zeigen Sie eine Mapview und andere ist nicht zeigen eine Mapview.Ändern Sie UIViewcontroller mit If-Anweisung

In diesem Fall habe ich segmentierte Kontrolle, wo in Segment 0 der View Controller mit der MapView angezeigt wird, aber ich habe einige andere Daten, die keine Informationen in der Mapview angezeigt werden. Ich würde gerne wissen, wie ich das machen könnte (mit einer if-Anweisung oder etwas Ähnlichem), da die andere UIView keine Übergänge hat.

View Controller with mapview

Infos

+0

Können Sie die Höhenbeschränkung auf 0 setzen, wenn Sie die Kartenansicht nicht anzeigen möchten? –

+0

@ J.Wang ja, aber es erscheint eine Menge von Konflikten Einschränkungen nach dieser – breadevelopment

+0

sollte nicht sein, wenn Sie sie richtig einstellen. Was sind die Konflikte? –

Antwort

0

Sie können mapview Höhe auf 0 gesetzt, wenn Sie es ausblenden möchten. Wie:

mapView.frame.size.height = 0 
1

Dies ist im Wesentlichen eine schlechte Praxis. Wenn Ihre App 2 oder mehr Bildschirme mit ähnlichem Design benötigt, sollten Sie nur einen Viewcontroller/eine einzige Szene verwenden. Auf diese Weise müssen Sie nur einmal Änderungen vornehmen, wenn eine Designänderung stattfindet.

2 viewcontrollers mit Unterschied von nur einer Kartensichtbarkeit ist nicht schwer zu codieren. Sie erklären, nur eine Eigenschaft bool für diesen viewcontrollerA wie so:

@property (nonatomic, assign) BOOL isMapVisible; 

Dann auf viewDidLoad auf viewControllerA legen Sie die Sichtbarkeit dieser Karte von:

if (!_isMapVisible) { 
    [_mapView setHidden = YES]; 
} 

Der Anrufer Viewcontroller implementiert dann prepareForSegue und stellen Sie die _isMapVisible vor dem Ausführen des Übergangs zu viewControllerA.

+0

Wenn ich diese Ansicht verwende, erscheint eine leere Stelle? – breadevelopment

+0

Eigentlich bin ich mir nicht sicher was du willst. Dies ist nur ein Beispiel, wie man einzelne Viewcontroller verwendet und Daten auf ihnen basierend auf dem Aufrufer unterschiedlich anzeigt. In der if-Anweisung müssen Sie eine eigene Methode schreiben, z. B. alle mit mapView in Beziehung stehenden Objekte in eine andere UIView einfügen und dann die Höheinschränkung dieser UIView in dieser if-Anweisung auf 0 setzen. Und das ist, wenn Sie Constraints überhaupt verwenden. Wenn Sie keine Einschränkungen verwenden, müssen Sie Dinge manuell positionieren. Es gibt viele Möglichkeiten, Sie müssen mehr Informationen zu Ihrem Code/Storyboard geben. – GeneCode

Verwandte Themen