2017-02-14 86 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