2013-04-11 2 views
0

У меня есть текущее местоположение пользователя и расположение контактов аннотаций. Когда пользователь нажимает кнопку, приложение начинает вычислять расстояние между текущим местоположением пользователя и местоположением булавки. Это мой код:Показывать представление предупреждения, когда текущее местоположение находится вблизи местоположения буфера.

- (IBAction)done:(id)sender { 

[Locate startUpdatingLocation]; 
CLLocation *current; 
CLLocation *pin; 
do{ 
    current=[[CLLocation alloc]initWithLatitude:Locate.location.coordinate.latitude longitude:Locate.location.coordinate.longitude]; 
    pin=[[CLLocation alloc]initWithLatitude:arrived.latitude longitude:arrived.longitude]; 

}while([current distanceFromLocation:pin]>1000); 

} 

Проблема заключается в том, что при нажатии на эту кнопку (Готово), по-видимому, чтобы войти в бесконечный цикл и приложение перестает работать.

ответ

0

Вы должны использовать оператор if, а не цикл for. Этот цикл будет выполнен до тех пор, пока пользователь не окажется в пределах 1000 метров от штыря.

- (IBAction)done:(id)sender { 

    [Locate startUpdatingLocation]; 
    CLLocation *current; 
    CLLocation *pin; 

    if ([current distanceFromLocation:pin] > 1000) { 
     current = [[CLLocation alloc]initWithLatitude:Locate.location.coordinate.latitude longitude:Locate.location.coordinate.longitude]; 
     pin = [[CLLocation alloc]initWithLatitude:arrived.latitude longitude:arrived.longitude]; 
    } 

} 

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