2011-05-18 56 views
0

我有view1,其中有button1,當button 1用戶點擊,用戶的當前位置進行跟蹤和第二視圖view2所示,其中用戶設置自己的搜索參數並點擊button2,當點擊button2時,將顯示一個視圖view3,其中顯示一個地圖。地圖只顯示如果我等待至少1分鐘

現在我的問題是,如果用戶至少等待1分鐘,然後點擊button2,地圖顯示得相當好,否則地圖不會顯示。 我對view2相關代碼:

- (void)viewDidLoad { 
//when this view is loaded, the user current location is tracked 
     self.locationManager=[[CLLocationManager alloc]init]; 
     [locationManager setDelegate:self]; 
     [locationManager setDesiredAccuracy:kCLLocationAccuracyNearestTenMeters]; 
     [locationManager startUpdatingLocation]; 
    } 
    #pragma mark- 
    #pragma mark CLLocationManagerDelegate 
    -(void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
    fromLocation:(CLLocation *)oldLocation 
    { 
     float latitude=newLocation.coordinate.latitude; 
     float longitude=newLocation.coordinate.longitude; 
     TopStationAppDelegate *topStation=(TopStationAppDelegate *)[[UIApplication sharedApplication]delegate]; 
     topStation.latitudeUtilisateur=latitude; 
     topStation.longitudeUtilisateur=longitude; 
     NSLog(@"%f",latitude); 
     NSLog(@"%f",longitude); 
     [locationManager stopUpdatingLocation]; 

    } 

我在view3這使問題代碼:

-(void)viewWillAppear:(BOOL)animated 
{ 
//here is the problem: 
//if the user wait 1 minute before coming to this view, I mean before clicking on button2 
//this view shows the map pretty well, otherwise the map is not displayed and I got brown //screen 

    [mapView removeAnnotations:mapView.annotations]; 
    [mapView setMapType:MKMapTypeStandard]; 
    TopStationAppDelegate *topStation=(TopStationAppDelegate *)[[UIApplication  sharedApplication]delegate]; 
    latitudeOfUserLocation=topStation.latitudeUtilisateur; 
    longitudeOfUserLocation=topStation.longitudeUtilisateur; 
} 

我爲什麼要等待1分鐘,我怎麼能解決這個問題?

回答

0

我假設您正試圖根據提供的代碼顯示用戶位置。您已創建CLLocationManager實例並要求它更新用戶的當前位置。在調用委託方法之前,這肯定需要一些時間。您可以在代理方法中設置應用代理的topStation.latitudeUtilisateurtopStation.longitudeUtilisateur

假設用戶在檢索這些值之前轉到下一個屏幕,則不會設置上述值。您在設置數據之前訪問了-viewWillAppear中的數據,因此數據會過時或nil。試圖顯示這個位置將無法正常工作。

如果你真的想顯示用戶的位置,你能不能用得起MKMapViewshowsUserLocation。將其設置爲YES並處理代理的-mapView:didUpdateUserLocation:方法中的位置更新。

讓我知道我是否誤解了你的問題。