2013-11-03 6 views
0

Я делаю приложение, которое определяет местоположение пользователя и делает [locationManager startUpdatingLocation] вызов функции initWithNibName, но initWithNibName не вызывается сразу сзади, поэтому я добавил вызов для него в AppDelegate.m:ios7 initWithNibName

WhereamiViewController *wvc = [[WhereamiViewController alloc] initWithNibName:@"WhereamiViewController" bundle:nil]; 

Это работает, однако возникает проблема с вызовом этой функции в функции initWithNibName: [locationManager startUpdatingLocation]. Он буквально ничего не возвращает. Но, если я изменю свой код, чтобы позвонить initWithNibName в мою линию viewDidLoad, он работает. Почему это? Я очень смущен и искал ответы, но я замер. Я понимаю, что нужно вызвать initWithNibName, но я не понимаю, почему это не сработает, если я назову его с AppDelegate.m.

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateLocations:(NSArray *)locations` 

- (void)locationManager:(CLLocationManager *)manager 
    didFailWithError:(NSError *)error 

Вот моя initWithNibName функция:

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

    if (self) { 
     locationManager = [[CLLocationManager alloc] init]; 

     locationManager.delegate = self; 
     locationManager.desiredAccuracy = kCLLocationAccuracyKilometer; 

     // Set a movement threshold for new events. 
     locationManager.distanceFilter = 500; // meters 

     [locationManager startUpdatingLocation]; 
    } 

    return self; 
} 
+0

Сколько разных мест вы вызываете initWithNibName (или любой вкус init) в этом классе контроллера вида? –

+0

только один раз. либо в appdelegate.m, либо в viewdidload. – Thomas

+0

xcode - только IDE. это НЕ api или sdk –

ответ

0

вы установили файл XIb прямо? вещи попробовать: , если вы не используете NIBS затем создать метод называется INIT:

- (id) init { 
self = [super init]; 
if(self) { 
    //call code here 
} 
return self; 
} 

, а затем вместо вызова метода бобах в приложение делегата просто называют инициализации

или второй вариант должен был бы назвать код прямо в viewdidload вместо того, чтобы делать выше

+0

он входит в метод, как это было с initWithNibName, но '- (void) locationManager: (CLLocationManager *) manager didUpdateLocations: (NSArray *) location' не вызывается, как в initWithNibName – Thomas

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