Я пытаюсь передать местонахождение метки из CLGeocoder в другой класс UILabel с именем cityLabel. Класс с CLGeocoder с именем WXManager и mainViewController с именем WXController. Я старался изо всех сил, чтобы он работал, но я просто не могу получить название города, переданное в cityLabel.Передача имени города CLGeocoder с помощью протокола делегата
WXManager.h
@class WXManager;
@protocol WXManagerDelegate <NSObject>
- (void)WXManagerDidGeocodeCityName:(NSString *)cityName;
@end
@interface WXManager : NSObject <CLLocationManagerDelegate>
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;
@end
WXManager.m
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
if (self.isFirstUpdate) {
self.isFirstUpdate = NO;
return;
}
CLLocation *location = [locations lastObject];
if (location.horizontalAccuracy > 0) {
self.currentLocation = location;
[self.locationManager stopUpdatingLocation];}
CLGeocoder *fgeo = [[CLGeocoder alloc] init];
// Reverse Geocode a CLLocation to a CLPlacemark
[fgeo reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error){
if(!error){
for(CLPlacemark *placemark in placemarks){
self.cityName = [placemark locality];
[self.customDelegate WXManagerDidGeocodeCityName:self.cityName];
NSLog(@"city is %@",cityName); }
} else {
NSLog(@"There was a reverse geocoding error\n%@",
[error localizedDescription]);
}
}
];
}
WXController.h
@interface WXController : UIViewController
<WXManagerDelegate>
- (void)WXManagerDidGeocodeCityName:(NSString *)cityName;
@end
И наконец, в WXController.m, где эта проблема, кажется, мой метод WXManagerDidGeocodeCityName не будет вызван. И я не знаю, что случилось. Кто-нибудь знает, как заставить этот метод получить вызов?
WXManager *cityName = [[WXManager alloc] init];
cityName.customDelegate = self;
#pragma mark - Custom Delegate Method
- (void)WXManagerDidGeocodeCityName:(NSString *)cityName
{
[self.cityLabel setText:cityName];
NSLog(@"cityName is %@", cityName);
NSLog(@"DidGetCalled");
}
Журнал не называется, поэтому где-то там что-то не хватает.
, как это определено customDelegate –
о пропущенных, что @property (слабый, неатомической) идентификатор customDelegate; –
Pierre
ты держишься за название города? иначе он не будет сохранен, и он уйдет –