使用 if 语句更改 UIViewcontroller
Posted
技术标签:
【中文标题】使用 if 语句更改 UIViewcontroller【英文标题】:Change UIViewcontroller with if statement 【发布时间】:2017-02-14 21:24:39 【问题描述】:我有两个相同的视图控制器,唯一的区别是首先显示地图视图,其他不显示地图视图。
在这种情况下,我有分段控件,在分段 0 中显示带有 mapView 的视图控制器,但我有一些其他数据没有要在 mapview 中显示的信息。我想知道我怎么能做到这一点(使用 if 语句或类似的东西),因为另一个 UIView 没有 segue。
【问题讨论】:
当你不想显示地图视图时,你能把高度限制设置为0吗? @J.Wang 是的,但设置后出现很多冲突约束 如果你设置正确就不应该。有什么冲突? 【参考方案1】:这本质上是一种不好的做法。如果您的应用需要 2 个或更多具有相似设计的屏幕,那么您应该只使用一个视图控制器/场景。这样,如果发生设计更改,您只需更改一次。
2 个仅具有地图可见性差异的视图控制器并不难编写代码。您只需为该 viewcontrollerA 声明一个属性 bool ,如下所示:
@property (nonatomic, assign) BOOL isMapVisible;
然后在 viewControllerA 上的 viewDidload 上,通过以下方式设置此地图的可见性:
if (!_isMapVisible)
[_mapView setHidden = YES];
调用者 viewcontroller 然后实现 prepareForSegue 并在执行 segue 到 viewControllerA 之前相应地设置 _isMapVisible。
【讨论】:
如果我使用这个,我的视图会出现一个空格? 其实我不确定你想要什么。这只是一个如何使用单个 Viewcontroller 并根据调用者以不同方式显示数据的示例。在if语句中,你需要编写自己的方法——例如,将所有与mapView相关的对象放在另一个UIView中,然后在这个if语句中将这个UIView的height-constraint设置为0。那就是如果你完全使用约束。如果您不使用约束,则必须手动定位。有很多可能性,您需要在代码/故事板上提供更多信息。【参考方案2】:如果你想隐藏它,你可以将地图视图高度设置为 0。喜欢:
mapView.frame.size.height = 0
【讨论】:
以上是关于使用 if 语句更改 UIViewcontroller的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JavaScript 中的三元运算符更改函数中的 if else 语句?
当使用 view.window?.rootViewController 根据 if 语句更改视图时,嵌入式控制器不会被激活