2013-11-03 5 views
0

Я следую этому руководству для создания программы, которая показывает местоположение пользователя. Я уже сказал Xcode, чтобы имитировать место для меня уже, и даже на симуляторе убедился, что это позволяет моему приложению отслеживать местоположения. Однако на мою консоль ничего не записывается.Xcode 5 didupdatelocations не работает

Заголовочный файл:

#import <UIKit/UIKit.h> 
#import <CoreLocation/CoreLocation.h> 

@interface WhereamiViewController : UIViewController <CLLocationManagerDelegate> { 
    CLLocationManager *locationManager; 
} 

@end 

И главный файл:

#import "WhereamiViewController.h" 

@implementation WhereamiViewController 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 

    if (self) { 
     locationManager = [[CLLocationManager alloc] init]; 
     [locationManager setDelegate:self]; 
     [locationManager setDesiredAccuracy:kCLLocationAccuracyBest]; 
     [locationManager setPausesLocationUpdatesAutomatically:NO]; 
     [locationManager startUpdatingLocation]; 
    } 

    return self; 
} 

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations 
{ 
    NSLog(@"%@", [locations lastObject]); 
} 

- (void)locationManager:(CLLocationManager *)manager 
    didFailWithError:(NSError *)error 
{ 
    NSLog(@"Error: %@", error); 
} 

@end 
+0

возможно дубликат [CLLocationManager не отправляет местоположения методу didUpdateLocations] (http://stackoverflow.com/questions/15656889/cllocationmanager-does-not-send-location-to-the-didupdatelocations-method) –

+0

@ josh Это работает, если я помещаю свой код в viewDidLoad, но не в его initWithNibName. Почему это? Первоначально initWithNibName даже не вызывался, поэтому я установил его в своем AppDelegate.m 'WhereamiViewController * wvc = [[WhereamiViewController alloc] initWithNibName: @« WhereamiViewController »bundle: nil];' – Thomas

ответ

1

Я не 100% уверен, что ответ, но это то, что я есть.
iOS 7 позволяет выбирать местоположение только тогда, когда приложение находится на переднем плане. Когда вы пишете свой код в initwithNibName, ваше приложение на самом деле не на переднем плане, оно создает элементы управления из xib-файлов и всего. Вот почему ОС не дает вам обновлений местоположения.

+0

Это сделало это для меня. Я вызвал 'startUpdatingLocation' во время первых тестов из' application didFinishLaunchingWithOptions', который, похоже, слишком рано. Выбрав его нажатием кнопки, все работает так, как ожидалось. –

Смежные вопросы