2017-02-14 102 views
0

我有兩個相同的視圖控制器,唯一的區別是第一個顯示mapview,而另一個不顯示mapview。用if語句更改UIViewcontroller

在這種情況下,我已經分段控制在段0顯示視圖控制器與地圖視圖,但我有一些其他數據,沒有信息要顯示在地圖視圖中。我想知道如何做到這一點(與if語句或類似的東西),因爲其他UIView沒有segue。

View Controller with mapview

Infos

+0

當您不想顯示地圖視圖時,您可以將高度限制設置爲0嗎? –

+0

@ J.Wang是的,但設置後出現了很多衝突限制 – breadevelopment

+0

不應該是如果你正確設置它們。什麼是衝突? –

回答

0

你可以,如果你想隱藏它MapView的高度設置爲0。像:

mapView.frame.size.height = 0 
1

這實質上是一種不好的做法。如果您的應用需要2個或更多類似設計的屏幕,那麼您應該只使用一個視圖控制器/場景。這樣,如果發生設計更改,您只需更改一次。

2只有地圖可見度不同的viewcontrollers不難編碼。你只需要聲明一個屬性布爾爲viewcontrollerA像這樣:

@property (nonatomic, assign) BOOL isMapVisible; 

然後在viewDidLoad中的viewControllerA,設置此地圖由知名度:

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

呼叫者的ViewController然後實現prepareForSegue並設置_isMapVisible相應地在執行segue到viewControllerA之前。

+0

如果我使用這個,我的視圖會出現一個空白區域? – breadevelopment

+0

其實我不確定你想要什麼。這只是一個示例,如何根據調用者使用單個ViewController並在其上顯示不同的數據。在if語句中,您需要編寫自己的方法 - 例如,將與mapView相關的所有對象放在另一個UIView中,然後在此if語句中將此UIView的高度約束設置爲0。那就是如果你使用約束。如果你不使用約束,那麼你必須手動定位。有很多可能性,你需要提供更多關於你的代碼/故事板的信息。 – GeneCode