2011-10-04 4 views
0

Je suivais le grand livre de ballot guide ranch et ont modifié mon application delegate.h pour ressembler à ceci:MKMapView didUpdateUserLocation pas appelé

#import <UIKit/UIKit.h> 
    #import <CoreLocation/CoreLocation.h> 
    #import <MapKit/MapKit.h> 
    @interface WhereamiAppDelegate : NSObject <UIApplicationDelegate,CLLocationManagerDelegate, MKMapViewDelegate> 
    { 
     IBOutlet UITextField *locationTitleField; 
     IBOutlet UIActivityIndicatorView *activityIndicator; 
     IBOutlet MKMapView *worldView; 
     CLLocationManager *locationManager; 
    } 
    @property (nonatomic, retain) IBOutlet UIWindow *window; 
    @property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext; 
    @property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel; 
    @property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator; 
    - (void)saveContext; 
    - (NSURL *)applicationDocumentsDirectory; 
@end 

Le .m ressemble à ceci:

#import "WhereamiAppDelegate.h" 
@implementation WhereamiAppDelegate 
@synthesize window = _window; 
@synthesize managedObjectContext = __managedObjectContext; 
@synthesize managedObjectModel = __managedObjectModel; 
@synthesize persistentStoreCoordinator = __persistentStoreCoordinator; 

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { 

    CLLocationCoordinate2D loc = [userLocation coordinate]; 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 250, 250); 
    [worldView setRegion:region animated:YES]; 
    NSLog(@"didUpdateUserLocation is called"); 
    } 
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
    { 
    // Override point for customization after application launch. 

// Create location manager object 
    locationManager = [[CLLocationManager alloc] init]; 
// There will be a warning from this line of code; ignore it for now 
    [locationManager setDelegate:self]; 
// We want all results from the location manager 
    [locationManager setDistanceFilter:kCLDistanceFilterNone]; 
// And we want it to be as accurate as possible 
// regardless of how much time/power it takes 
    [locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
// Tell our manager to start looking for its location immediately 
// [locationManager startUpdatingLocation]; 
    [worldView setShowsUserLocation:YES]; 
// This line may say self.window, don't worry about that 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 
{ 
     NSLog(@"%@", newLocation); 
} 
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error 
{ 
     NSLog(@"Could not find location: %@", error); 
} 

Quand j'ouvre l'application il devrait ZOOM dans mon emplacement. Mais il ne fait pas de zoom, donc j'ai mis un NSLog dans le didUpdateUserLocation pour voir s'il a été appelé. Mais il n'a jamais été imprimé, il n'a donc pas été appelé. Comment puis-je réparer ça?

+0

NOTE J'UTILISE XCODE 4.1 et 4.3 SIMULATEUR – user973985

+0

never mind ... je trouve que c'était parce que j'oublié de mettre le délégué ! – user973985

+2

bien en fait je n'ai pas oublié ... le livre a fait ~! – user973985

Répondre

4

Même chose pour moi ...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    ... 
    [worldView setDelegate:self]; 
    ... 
} 

Thks

Questions connexes