2013-09-15 2 views
0

Итак, я подумал, что исправил проблему, но столкнулся с другой ...Как мне получить блок для запуска один раз, но каждый раз, когда я вызываю viewController?

Я беру местоположение пользователя, а затем использую их координаты, чтобы найти почтовый индекс, в котором они сейчас находятся, но когда я запускаю его внутри блока он выходит на консоль только один раз. Когда я пытаюсь запустить блок по другому методу, он выплескивает много раз все с одним и тем же почтовым индексом.

Вопрос: как я могу сделать так, чтобы блок печатал один почтовый индекс, и он делает это каждый раз, когда контроллер вида воспитывается ..?

//user's location 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.distanceFilter = kCLDistanceFilterNone; 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; 
    [locationManager startUpdatingLocation]; 



     CLGeocoder *fgeo = [[CLGeocoder alloc] init]; 
     [fgeo reverseGeocodeLocation:locationManager.location completionHandler:^(NSArray *placemarks, NSError *error) { 
      if (!error) { 
       CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
       zip = placemark.postalCode; 

       NSLog(@"%@", zip); 
       //[self jsonRequest]; 
+0

, чтобы он запускался при показе просмотра, помещался в ViewWillAppear. Не уверен в части 2 вопроса. – DogCoffee

+0

Это зависит от того, что вы подразумеваете под «поднятым», но «viewWillAppear» кажется отправной точкой. –

+0

Ввод в ViewWillAppear исправил все. Спасибо вам, ребята! – Lalalalalala

ответ

0

Переопределите viewDidAppear и введите код. Это называется каждые, когда появляется контроллер вида. Если вы хотите, чтобы он вызывался только один раз, когда контроллер представления создан и должен появиться, переопределите viewDidLoad.

Если вы хотите, чтобы его вызывали только один раз, но специально после того, как на экране видны изображения, вам нужно будет что-то проверить в viewDidAppear, что указывает на его появление в первый раз. Вероятно, вам нужно установить флаг в viewDidLoad или init И затем сбросить его, как только viewDidAppear вызывается в первый раз.

1

Когда я пытаюсь запустить блок в другом методе выплевывает тонн раз все с тем же почтовым индексом.

Как только он вводит ошибку If (!) В оператор return, и это должно решить проблему.

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