Как правильно вызвать метод отображения текущего местоположения из метода appdelegate?
Я пытался использовать этот метод, но по какой-то причине он не увеличит текущее местоположение. Есть ли что-то, что я делаю не так?
Appdelegate.m
-(void)handleNetworkChange
{
self.reachability = [Reachability reachabilityForInternetConnection];
[self.reachability startNotifier];
NetworkStatus remoteHostStatus = [self.reachability currentReachabilityStatus];
MapViewController *mapViewController = [[MapViewController alloc]init];
if(remoteHostStatus == NotReachable)
{
self.internetReachable = NO;
}
else
{
self.internetReachable = YES;
[mapViewController userLocation];
}
}
MapViewController.m
-(void)userLocation
{
MKCoordinateRegion mapRegion;
mapRegion.center.latitude = self.mapView.userLocation.coordinate.latitude;
mapRegion.center.longitude = self.mapView.userLocation.coordinate.longitude;
mapRegion.span.latitudeDelta = 0.2;
mapRegion.span.longitudeDelta = 0.2;
[self.mapView setRegion:mapRegion animated:YES];
}
1 ответ
Я бы просто использовал NSNotificationCenter. вы устанавливаете прослушиватель, который ожидает уведомления о публикации, как только будет получена нормализация сообщения, будет запущен селектор
вот как это сделать (на самом деле очень просто)
Это должно идти в вашем контроллере представления, где вы представляете карту, лучше всего в viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(runThisFunctionWhenReady:)
name:@"TestNotification"
object:nil];
Метод масштабирования должен быть размещен в том же контроллере вида, например:
-(void)runThisFunctionWhenReady
{
// Zoom the map and other funky stuff
}
Теперь из любой точки приложения (включая делегата) вы можете запустить это, отправив уведомление следующим образом:
[[NSNotificationCenter defaultCenter]
postNotificationName:@"TestNotification"
object:self];