2011-10-24 10 views
1

私のコードからGPSに接続しようとしています。私はto this tutorialに従ってそうしています。経度と緯度の値を取得する

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    CLController = [[CoreLocationController alloc] init]; 
    CLController.delegate = self; 
    [CLController.locMgr startUpdatingLocation]; 
} 

- (void)locationUpdate:(CLLocation *)location { 
    locLabel.text = [location description]; 
    } 

- (void)locationError:(NSError *)error { 
    locLabel.text = [error description]; 
    } 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    } 

上記のコードは、GetMyLocationViewControllerと呼ばれるビューコントローラに入れ、そしてIはMainScreenViewControllerと呼ばれる別のビューコントローラを有するされます。

画面がロードされると、MainScreenViewControllerがロードされ、この画面で操作を続行するにはGPSの場所が必要になります。

の方法では、MainScreenViewControllerと書いてあります。

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    GetMyLocationViewController *getMyLocationViewController = [[GetMyLocationViewController alloc]initwithXib:nil bundle:nil]; 

    [self.navigationController pushViewController:getMyLocationViewController Animation:YES]; 
    // AND THEN I NEED TO ACCESS THE LONGITUDE AND LATITUDE VALUES 

} 

上記のコードが実行されます、MainScreenViewControllerviewDidLoad方法はlocationUpdate方法を実行し、なくます。 longitudelatitudeの値を得ることができる唯一の方法は、locationUpdateメソッドの実行によるものです。どうすればこれらの値を取得できますか?

答えて

0

デバイスでテストしましたか?バージョン4.2より前のxcodeはGPSシミュレータを持っていないので、locationUpdateメソッドは決して呼び出されません。

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
    if([self.delegate conformsToProtocol:@protocol(CoreLocationControllerDelegate)]) { // Check if the class assigning itself as the delegate conforms to our protocol. If not, the message will go nowhere. Not good. 
     [self.delegate locationUpdate:newLocation]; 
    } 
} 
+0

'ViewDidLoad'の後に' locationUpdate'が呼び出されたとしますか? 'ViewDidLoad'が呼び出された後に終了しませんか? – sharon

+0

あなたは答えをコピーするプロトコルを実装する必要があります。このメソッドは、GPSが新しい座標を取得したときにのみ更新されます。 – gfdgfd

+0

どういう意味ですか?私は初心者です:あなたは詳細を教えてください – sharon

0

GetMyLocationViewControllerをロードしてもよろしいですか?あなたのコードはの読み込みを示しています。-viewDidLoadメソッドでは、読み込みとプッシュの無限ループの原因となるように再度ロードされますMainScreenViewControllers

更新:このチュートリアルのCoreLocationControllerクラスは不要です。代わりに、CLLocationManagerをGetMyLocationViewControllerのプロパティにします。 GetMyLocationViewControllerの-viewDidLoadメソッドを作成し、次のようになります。

-(void)viewDidLoad { 
    [super viewDidLoad]; 

    self.locationManager = [[CLLocationManager alloc] init]; 
    self.locationManager.delegate = self; 
    [self.locationManager startUpdatingLocation]; 
} 

はCoreLocationライブラリをインポートし、デリゲートメソッドを実装することを忘れないでください。

+0

ああ、申し訳ありません、私はコードを編集しました。私はコードの間違ったビットをタイプしました(変更されたコードを調べてください)。私は何をすべきかのような手がかりはありますか? – sharon

関連する問題