2013-04-11 269 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]; 
    } 

} 

我想象一下,當用戶的當前位置發生變化時,您想要重新調用此方法。