是否可以将相同的视图添加到两个不同的视图控制器?

Is it possible to add the same view to two different view controllers?

我收到以下错误消息:

A view can only be associated with at most one view controller at a time!

是否可以将相同的视图添加到两个不同的视图控制器?

我想将 Google 映射的一个实例添加到选项卡视图控制器。

我在故事板中使用 swift4。

一个UIView只能关联一个其他视图,因为它只能有一个父视图,设置为superView属性。布局之类的东西也是在这个视图上设置的,并且是相对于它的父视图的,所以在多个控制器中使用同一个视图是没有意义的。 最好的解决方案是 subclass UIView 然后将自定义 class 的新实例添加到每个 ViewController

如果它是一个典型的视图,那么您应该创建一个 XIB 并将它的一个新实例添加到每个视图。 由于您使用的是 Google Maps SDK 中的 GMSMapView,并且您希望在多个选项卡中使用相同的实例,因此方法会有所不同。

您可以:

  1. 新实例,相同参数: 在每个选项卡中创建一个新实例,并将参数设置为与其他选项卡相同。
  2. 在单个实例中移动: 创建 GMSMapView 的实例。将其存储在共享 属性 中。使用 addSubview() 来移动它。基本上在新标签中使用addSubview()将其从旧标签中删除并添加到新标签中。