この質問を投稿した後、合計 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 ";
}