Tangram self.view понижает до TGMapView. Где присваивается self.view?
В текущем демонстрационном приложении Tangram нижеуказанный метод определен в 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 присваивается значение?
С помощью какого метода init создается представление или пользовательское представление?
После дальнейших исследований я нашел это на Apple Docs. Кажется, подразумевается, что пользовательский UIView должен иметь эти элементы. Мне не ясно, зачем нужны два разных init, но я могу предположить, что apple использует один или оба для инициализации представления.
1 ответ
Существует несколько способов указать представление для контроллера представления (подробнее см. В разделе "Управление представлением" документации UIViewController):
- В раскадровке
- В файле пера
- Переопределяя метод loadView контроллера и создавая представление там явно.
Демонстрационное приложение, с которым вы связались, использует раскадровки для создания пользовательского интерфейса, а пользовательский класс для представления указывается в Main_iPhone.storyboard (и Main_iPad.storyboard).