我有一个视图(在我的例子中是一个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的高度,它不是零。
我错过了什么吗?
感谢您的帮助
答案 0 :(得分:4)
我也问过自己这个问题。我不知道是否可能(我从来没有找到办法),但不建议这样做。将视图放入视图控制器后(通过addSubview
上的view
),视图控制器“拥有”视图。
以下是解释原因的UIView
documentation:
视图可以嵌套在其他视图中以创建视图层次结构,这提供了一种组织相关内容的便捷方式。嵌套视图会在嵌套的子视图(称为子视图)和父视图(称为superview)之间创建父子关系。 父视图可能包含任意数量的子视图,但每个子视图只有一个超级视图。
相反,添加在VC2中设置新地图视图所需的属性(例如center,span,任何注释详细信息),并在第二个视图控制器中设置新的地图视图。