Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用if语句更改UIViewcontroller_Ios_Objective C_Autolayout_Xcode Storyboard - Fatal编程技术网

Ios 使用if语句更改UIViewcontroller

Ios 使用if语句更改UIViewcontroller,ios,objective-c,autolayout,xcode-storyboard,Ios,Objective C,Autolayout,Xcode Storyboard,我有两个相同的视图控制器唯一的区别是第一个显示mapview,另一个不显示mapview 在本例中,我使用了分段控件,其中在分段0中显示带有mapView的视图控制器,但我有一些其他数据,这些数据没有要在mapView中显示的信息。我想知道如何做到这一点(使用if语句或类似的语句),因为另一个UIView没有segue 如果要隐藏地图视图高度,可以将其设置为0。比如: mapView.frame.size.height = 0 这基本上是一种不好的做法。如果您的应用程序需要2个或多个具有类似

我有两个相同的视图控制器唯一的区别是第一个显示mapview,另一个不显示mapview

在本例中,我使用了分段控件,其中在分段0中显示带有mapView的视图控制器,但我有一些其他数据,这些数据没有要在mapView中显示的信息。我想知道如何做到这一点(使用if语句或类似的语句),因为另一个UIView没有segue


如果要隐藏地图视图高度,可以将其设置为0。比如:

mapView.frame.size.height = 0

这基本上是一种不好的做法。如果您的应用程序需要2个或多个具有类似设计的屏幕,则应仅使用一个viewcontroller/场景。这样,如果发生设计更改,您只需更改一次

2个仅具有地图可见性差异的ViewController不难编码。您只需为该viewcontrollerA声明一个属性bool,如下所示:

@property (nonatomic, assign) BOOL isMapVisible;
然后在viewDidload on viewControllerA上,通过以下方式设置此地图的可见性:

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

调用方viewcontroller然后执行prepareForSegue并在执行segue to viewControllerA之前相应地设置_isMapVisible。

当您不想显示地图视图时,是否可以将高度约束设置为0?@J.Wang是的,但设置后会出现许多冲突约束。如果设置正确,则不应该设置这些约束。有什么冲突?如果我使用这个,我的视图将显示为空白?实际上我不确定你想要什么。这只是一个示例,说明如何使用单个Viewcontroller并根据调用者的不同在其上显示数据。在if语句中,您需要编写自己的方法-例如,将与mapView相关的所有对象放在另一个UIView中,然后在此if语句中将此UIView的高度约束设置为0。如果你使用约束的话。如果不使用约束,则必须手动定位对象。有很多可能性,你需要在你的代码/故事板上提供更多信息。