У меня есть небольшая проблема, которая говорит о моем непонимании Obj C.Initializing просмотров (MapKit пример)
Я сделал небольшое приложение с корневым меню и кнопкой, которая подключается к другой точке зрения (карта). Моя проблема заключается в установке местоположения по умолчанию на карте при загрузке. В моем коде внутри MapViewController.m я включил функцию:
- (void)viewWillAppear:(BOOL)animated {
CLLocationCoordinate2D zoomLocation;
zoomLocation.longitude= desired_longitude;
zoomLocation.latitude = desired_latitude;
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(zoomLocation, 4*METERS_PER_MILE, 4*METERS_PER_MILE);
[self.mapOutlet setRegion:viewRegion animated:YES];}
Теперь, когда я сначала запустить приложение и нажать на кнопку карты в корневое меню, карта центрируется где-то в Атлантическом океане. Но если я вернусь в корневое меню и снова нажму кнопку карты, карта будет сосредоточена в нужном месте! Я попытался поместить этот код внутри метода viewDidLoad с тем же результатом.
Может ли кто-нибудь объяснить мне, как это решить и, что более важно, как это работает? Какой метод (ы) вызывается при появлении нового представления? Например, мне кажется странным, что только включив вышеупомянутый метод в файл реализации, этот метод выполняется без моего вызова (на данный момент только после второй навигации по карте, но все же) ...
Спасибо за ваш ответ, но я боюсь, что моя проблема не устранена. Как я уже сказал, в первый раз, когда я перехожу к mapview (из корневого меню), симулятор показывает где-то рядом с Антарктидой. После этого (если я вернусь к корню, а затем снова к mapview), все будет работать так, как ожидалось. Более того, если я вставляю точку останова в последнюю строку viewWillAppear вашего кода, код, кажется, будет выполнен (как вы сказали) до того, как появится первая карта, но все же карта окажется центрированной в антарктике ... Может быть, Я что-то делаю – user2135738