J'essaie d'effectuer une opération simple que j'ai fait beaucoup dans ce programme. J'essaie de lancer le CLLocationManager une fois que l'application a fini de se lancer et d'obtenir l'emplacement actuel une fois la mise à jour terminée. Mon application fonctionne en ce qu'elle obtient l'emplacement actuel, lorsque je NSLog l'emplacement actuel, il fonctionne bien. Le problème est que j'essaie de passer cet emplacement d'un objet à un autre et qu'il n'a pas de valeur une fois qu'il y est arrivé.L'accesseur Getter ne fonctionne pas, l'objectif iphone sdk C
J'ai cherché des méthodes d'accesseur et tout semble correct car j'ai ce genre d'opérations partout dans mon programme. J'ai essayé de suivre de nombreux exemples mais aucun ne semble fonctionner.
Voici du code.
Ceci est le fichier .h du 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
C'est le fichier .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]);
}
A ce stade, il fonctionne. Je reçois l'emplacement imprimé et tout, mais j'ai besoin de cet emplacement dans un autre objet et il semble que toutes mes tentatives de retravailler la notation par points a échoué. Voici le. h de l'objet que j'ai besoin dans.
@interface School_Location_List_Controller : UIViewController {
CLLocation* currentLocation;
}
- (IBAction) btnBack_Clicked:(id)sender;
@property (nonatomic, assign) CLLocation* currentLocation;
Et voici le .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];
}
Il est à ce moment que je suis confus. Quand j'imprime cela, cela dit simplement que currentLocation est nul. C'est comme si elle n'a jamais eu les données ..
Merci les gars d'avance.
Oups! Je n'ai même pas attrapé ça! –
DAVE !!!! Je ne peux pas vous remercier assez. Je suis nouveau à toute cette affaire et ai creusé mon cerveau pendant des jours sur cette chose. C'est toujours les choses simples qui font cela .. Merci – Makinitez21