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 类型。可能有相关答案的两个问题:
一般来说,self.view是在哪里赋值的?
视图或自定义视图是用什么初始化方法创建的?
经过进一步研究,我在苹果文档上找到了this。这似乎暗示自定义 UIView 必须具有这些 inits。我不清楚为什么需要两个不同的初始化,但我可以假设苹果使用一个或两个来初始化视图。
有几种方法可以为视图控制器指定视图(更多详细信息请参见 UIViewController documentation 的 "View Management" 部分):
- 在故事板中
- 在 nib 文件中
- 覆盖控制器的 loadView 方法并在那里显式创建视图。
您链接到的演示应用程序使用情节提要创建 UI 并在 Main_iPhone.storyboard(和 Main_iPad.storyboard)中指定视图的自定义 class。
在 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 类型。可能有相关答案的两个问题:
一般来说,self.view是在哪里赋值的?
视图或自定义视图是用什么初始化方法创建的?
经过进一步研究,我在苹果文档上找到了this。这似乎暗示自定义 UIView 必须具有这些 inits。我不清楚为什么需要两个不同的初始化,但我可以假设苹果使用一个或两个来初始化视图。
有几种方法可以为视图控制器指定视图(更多详细信息请参见 UIViewController documentation 的 "View Management" 部分):
- 在故事板中
- 在 nib 文件中
- 覆盖控制器的 loadView 方法并在那里显式创建视图。
您链接到的演示应用程序使用情节提要创建 UI 并在 Main_iPhone.storyboard(和 Main_iPad.storyboard)中指定视图的自定义 class。