Я пытаюсь выполнить простую операцию, которую я много сделал в этой программе. Я пытаюсь запустить CLLocationManager после завершения запуска приложения и получить текущее местоположение после обновления. Мое приложение работает в том, что оно получает текущее местоположение, когда я NSLog текущее местоположение, оно работает нормально. Проблема в том, что я пытаюсь передать это местоположение от одного объекта к другому, и у него нет значения, когда он туда попадает.
Я искал методы доступа, и все кажется правильным, так как у меня есть эти типы операций во всей моей программе. Я пытался следовать многочисленным примерам, но ни один из них не помог.
Вот код.
Это файл .h файла CLLocationManagerDelegate.
@interface YogaAllianceAppDelegate : NSObject <UIApplicationDelegate,CLLocationManagerDelegate> {
CLLocationManager *locationManager;
CLLocation *mycurrentLocation;
float curLats;
float curLons;
BOOL locationDidUpdate;
UIWindow *window;
YogaAllianceViewController *viewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) CLLocationManager *locationManager;
@property (nonatomic, assign) float curLats;
@property (nonatomic, assign) float curLons;
@property (nonatomic, assign) CLLocation *mycurrentLocation;
@property (nonatomic, retain) IBOutlet YogaAllianceViewController *viewController;
@end
Это файл .m
@synthesize viewController, locationManager, curLats, curLons, mycurrentLocation;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
self.locationManager = [[[CLLocationManager alloc]init] autorelease];
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
locationManager.delegate = self;
[locationManager startUpdatingLocation];
locationDidUpdate = NO;
[window addSubview:viewController.view];
[window makeKeyAndVisible];
}
-(void)locationManager: (CLLocationManager *)manager
didUpdateToLocation: (CLLocation *)newLocation
fromLocation: (CLLocation *)oldLocation{
[[NSNotificationCenter defaultCenter]
postNotificationName:@"currentLocationDidUpdate" object: self];
[locationManager stopUpdatingLocation];
NSLog(@"Core Location says location available");
self.curLats = newLocation.coordinate.latitude;
self.curLons = newLocation.coordinate.longitude;
self.mycurrentLocation = newLocation;
NSLog(@"current position is then %@", [mycurrentLocation description]);
}
На данный момент это работает. Я распечатываю местоположение и все такое, но мне нужно это местоположение в другом объекте, и кажется, что все мои попытки изменить точечную запись потерпели неудачу.
Здесь . h объекта, в котором я нуждаюсь.
@interface School_Location_List_Controller : UIViewController {
CLLocation* currentLocation;
}
- (IBAction) btnBack_Clicked:(id)sender;
@property (nonatomic, assign) CLLocation* currentLocation;
А вот и .m
@implementation School_Location_List_Controller
@synthesize destinations, closeSchools, currentLocation;
-(void) viewWillAppear: (BOOL)animated {
NSLog (@"Registered for location events");
YogaAllianceAppDelegate *updated = [[YogaAllianceAppDelegate alloc]init];
currentLocation = updated.mycurrentLocation ;
NSLog(@"current position here in the passed object is %@", [currentLocation description]);
[super viewWillAppear:animated];
}
Именно в этот момент я запутался. Когда я распечатываю это, он просто говорит, что currentLocation равен Null. Как будто он никогда не получал данные ..
Заранее спасибо, ребята.