0

私は、数日ではないにしても何時間も私を維持してきた何かに真剣に取り組んでいます。誰かが入力を提供できれば素晴らしいでしょう。ボタンを押してから別のビューにデータを渡す方法を理解しましたが、現在やろうとしているのは、経度と緯度の座標を次のビューに NSString として送信することです。それは NSString として可能ですか?

CLLocationCoordinate2D を「場所」に既に関連付けているため、現時点では機能しないことに気付きましたが、他に何ができるでしょうか?

これが私のコードです:

if ([mlabel.text isEqualToString: @" Arts "])

   {
         CLLocationCoordinate2D location;
         location.latitude = (double) 44.4758;
         location.longitude = (double) -73.2125;

         viewController.stringToDisplay = location;

   }
4

2 に答える 2

1

この質問を投稿した後、合計 3 つの追加ビューを実装したため、最初の質問は異なります。今のところ、私の最初のビューにはアートというカテゴリがあります。Arts ビューには、次のようにアクセスできます。

例として、私の最初のビューでは、以下を使用して「Arts」ビューを開きます。

-(void)mainButton
{
  if ([mlabel.text isEqualToString: @" Arts " ])
  {
    [self performSegueWithIdentifier:@"Arts" sender:self];
  }
}

アート ビューに移動したら、アート会場の座標を 3 番目のビュー (マップ) にドロップします。これは次のようになります。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  FlipsideViewController *viewController = segue.destinationViewController;
  viewController.delegate = self;

  NSString *str;

     if ([[segue identifier] isEqualToString:@"showAlternate"]) 
     {
      [[segue destinationViewController] setDelegate:self];
     }

     if ([mlabel.text isEqualToString: @" Burlington City Arts "])     
     {
      CLLocationCoordinate2D location;
      location.latitude = (double) 44.476625;
      location.longitude = (double) -73.212827;

      str = [NSString stringWithFormat:@"%.2f, %.2f", location.latitude, location.longitude];

      viewController.stringToDisplay = str;
     }
}

上記のコードで起こっていることは、stringToDisplay を宣言して座標を保存し、それを 3 番目のビューに送信することです。私はラベルを使用し、ピッカービューからのラベルが「バーリントン シティ アーツ」というフレーズに等しい場合、その特定の場所から「str」NSString を介して 3 番目のビューに座標を送信すると言います。

最後に、ピンをドロップしたい場所の 3 番目のビューのコード:

if ([self.stringToDisplay isEqualToString: @"44.48, -73.21"])

{
    location.latitude = (double) 44.476625;
    location.longitude = (double) -73.212827;

    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"newAnnotation" andCoordinate:location];
    [self.mapView addAnnotation:newAnnotation];
    [mapView setCenterCoordinate:location animated:YES];
}

上記のコードでは、stringToDisplay は str NSString と座標をマップ ビュー (3 番目のビュー) に送信しますが、値は丸められていたため、丸められた数値を取得して IF ステートメントに入れました。その後、ピンをドロップする正確な座標を再度指定しました。タダ!

*****UPDATE*****

ビュー 2 とビュー 3 で座標を繰り返すのではなく、各会場のラベルを再宣言し、そのラベル名を 3 番目のビューに渡して、座標との混乱がないようにするのが最善であることに気付きました。これらの座標は、3 番目のマップ ビューで 1 回だけ指定されますが、これで問題ありません。次のように、stringToDisplay 文字列でラベル名を渡します。

if ([mlabel.text isEqualToString: @" The S.P.A.C.E. Gallery "])
        {
            viewController.stringToDisplay = @" The S.P.A.C.E. Gallery ";

        }
于 2012-10-26T22:38:20.843 に答える
1

私のアプリケーションでは、MapView が配置されている UIViewController のプロパティを宣言しました。

@property (nonatomic) double latitude;
@property (nonatomic) double longitude;

そして、このプロパティを処理したり、マップを自分の場所に移動するカスタム メソッドを作成したりできます。または、str が NSString である [str doubleValue] を渡すことで、NSString を double に変換することもできます。

于 2012-10-07T17:27:41.647 に答える