Tangram self.view 向下转换为 TGMapView。 self.view 分配在哪里?

Tangram self.view downcasting to TGMapView. Where is self.view assigned?

在 Tangram 的 current demo app 中,下面的方法在 MapViewController.m

中定义
- (void)viewDidLoad
{
    [super viewDidLoad];

    TGMapView *mapView = (TGMapView *)self.view;
    mapView.mapViewDelegate = self;
    mapView.gestureDelegate = self;
    self.locationManager = [[CLLocationManager alloc] init];
    self.locationManager.delegate = self;
}

在 super 之后发生的第一件事是将 self.view 向下转换为 TGMapView 类型。可能有相关答案的两个问题:

  1. 一般来说,self.view是在哪里赋值的?

  2. 视图或自定义视图是用什么初始化方法创建的?


经过进一步研究,我在苹果文档上找到了this。这似乎暗示自定义 UIView 必须具有这些 inits。我不清楚为什么需要两个不同的初始化,但我可以假设苹果使用一个或两个来初始化视图。

有几种方法可以为视图控制器指定视图(更多详细信息请参见 UIViewController documentation 的 "View Management" 部分):

  • 在故事板中
  • 在 nib 文件中
  • 覆盖控制器的 loadView 方法并在那里显式创建视图。

您链接到的演示应用程序使用情节提要创建 UI 并在 Main_iPhone.storyboard(和 Main_iPad.storyboard)中指定视图的自定义 class。