2013-06-23 79 views
0

這需要我幾天..我無法讓它工作。 我寫放在地圖針如下方法:將地圖上的地點視圖從座標發送到appdelegate

- (void) SetMaps:(NSString *)Lats :(NSString *)lons; 
{ 
    if([upLo isEqualToString:@"Y"]) 
    { 
     NSLog(@"setting maps:%@,%@",Lats,lons); 
     [mapView setMapType:MKMapTypeStandard]; 
     [mapView setZoomEnabled:YES]; 
     [mapView setScrollEnabled:YES]; 
     [mapView setMapType:MKMapTypeStandard]; 
     [mapView setZoomEnabled:YES]; 
       [mapView setScrollEnabled:YES]; 
     MKCoordinateRegion region = { {0.0, 0.0 }, { 0.0, 0.0 } }; 
     region.center.latitude = [Lats doubleValue] ; 
     region.center.longitude = [lons doubleValue]; 
     region.span.longitudeDelta = 0.01f; 
     region.span.latitudeDelta = 0.01f; 
     [mapView setRegion:region animated:YES]; 
     [mapView setDelegate:self]; 
     MKPointAnnotation *point = [[MKPointAnnotation alloc] init]; 
     point.coordinate = region.center; 
     [self.mapView addAnnotation:point]; 

    } 
} 

這種方法運行良好,如果我在標籤欄控制研究的應用程序調用它secondViewController.m。

但是,我想從appdelegate.m中調用它。 所以在appdelegate.m,我把

secondViewController *Gper=[[secondViewController alloc]init]; 
[Gper SetMaps:LAT:LON]; 
[Gper release]; 

從這個的NSLog(@ 「設置映射:%@%@」,拉圖,離子吸附);我可以看到這個方法中的lat和lons值是正確的。 但是,地圖不會更改爲此位置。

Whatelse應該讓它顯示新位置嗎?

感謝您的任何幫助。

+0

這與Xcode無關。 – 2013-06-23 04:41:45

回答

1

我覺得你應該在進一步做任何事之前更好地學習(Objective-)C內存管理和Cocoa約定。 + alloc返回視圖控制器類的新實例,而不是當前顯示的實例。

然後用大寫字母開始你的班級名稱。而你的方法名稱是小寫的。

+0

是的,我是OjectiveC的新手。那麼如何在不創建新實例的情況下調用該函數呢? – STANLEY

+0

@STANLEY那麼......沒有創建一個新的實例! – 2013-06-23 05:18:16

+0

我將該行更改爲secondViewController * Gper;它在運行時出現[Gper SetMaps:LAT:LON]錯誤; – STANLEY