как я могу вызывать методы в моих контроллерах из делегата приложения. Например, мое приложение использует делегат приложения для мониторинга местоположения пользователя. После того, как местоположение было определено, я хочу вызвать метод на контроллере, на котором есть MKMapView, и показать местоположение пользователя на нем. Как я могу это сделать?
Вот мой текущий код:
// AppDelegate.m
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
[[[DashboardViewController alloc] initWithNibName:@"DashboardViewController" bundle:nil] displayMyLocation:newLocation.coordinate];
}
Также пробовал это, который сбой с SIGABRT
, но по крайней мере пытается вызвать метод:
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
[(DashboardViewController *)dashboardViewController displayMyLocation:manager];
}
В качестве альтернативы, теперь, когда я думаю об этом, было бы неправильно, если бы контроллер также контролировал местоположение пользователя и просто сам вызывал его методы? Если я правильно помню, несколько делегатов CLLocationManagerDelegate не повлияли на производительность, потому что все они имеют одинаковый доступ к GPS? Это правильно или неправильно? Просто кажется глупым иметь несколько экземпляров одного и того же ...
Заранее спасибо!
ОБНОВЛЕНИЕ для @ nevan
Код карты:
- (void)displayMyLocation:(CLLocation *)location {
MKCoordinateSpan span;
MKCoordinateRegion region;
span.latitudeDelta = 0.02;
span.longitudeDelta = 0.02;
region.center = location.coordinate;
region.span = span;
[map setRegion:region];
}