通行证显示从VC1到VC2的相同视图

时间:2018-01-17 11:38:37

标签: ios swift uiview uikit mapbox

我有一个视图(在我的例子中是一个MGLMapview:mapboxView),它显示在我的第一个VC中。我希望我的第二个VC显示相同的视图。

所以从VC1到VC2我做了:

self.VC2.mapView = self.mapView

self.navigationController?.pushViewController(self.VC2, animated: true)

然后在VC2的viewDidLoad中:

view.addSubview(mapView)

我的问题是什么都没有出现。 但是,当我打印尺寸&第二个VC中mapView的高度,它不是零。

我错过了什么吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

我也问过自己这个问题。我不知道是否可能(我从来没有找到办法),但不建议这样做。将视图放入视图控制器后(通过addSubview上的view),视图控制器“拥有”视图。

以下是解释原因的UIView documentation

  

视图可以嵌套在其他视图中以创建视图层次结构,这提供了一种组织相关内容的便捷方式。嵌套视图会在嵌套的子视图(称为子视图)和父视图(称为superview)之间创建父子关系。 父视图可能包含任意数量的子视图,但每个子视图只有一个超级视图。

相反,添加在VC2中设置新地图视图所需的属性(例如center,span,任何注释详细信息),并在第二个视图控制器中设置新的地图视图。