Как правильно вызвать метод отображения текущего местоположения из метода 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];
Другие вопросы по тегам