【问题标题】:Change UIViewcontroller with if statement使用 if 语句更改 UIViewcontroller
【发布时间】:2017-02-14 21:24:39
【问题描述】:

我有两个相同的视图控制器,唯一的区别是首先显示地图视图,其他不显示地图视图。

在这种情况下,我有分段控件,在分段 0 中显示带有 mapView 的视图控制器,但我有一些其他数据没有要在 mapview 中显示的信息。我想知道我怎么能做到这一点(使用 if 语句或类似的东西),因为另一个 UIView 没有 segue。

【问题讨论】:

  • 当你不想显示地图视图时,你能把高度限制设置为0吗?
  • @J.Wang 是的,但设置后出现很多冲突约束
  • 如果你设置正确就不应该。有什么冲突?

标签: ios objective-c autolayout xcode-storyboard


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多