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

在我的应用程序中,我声明了 MapView 所在的 UIViewController 的属性:

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

您可以处理此属性,或制作自定义方法将地图移动到您的位置。或者你可以通过传递 [str doubleValue] 将 NSString 转换为 double,其中 str 是 NSString。

于 2012-10-07T17:27:41.647 回答
1

在我发布这个问题之后,我实现了一个额外的视图,总共 3 个,所以我最初的问题是不同的。到目前为止,我最初的观点有一个叫做艺术的类别。通过以下方式达到艺术观点:

例如,我的第一个视图使用以下内容打开我的“艺术”视图。

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

在我的艺术视图中,我将艺术场地的坐标放到我的第三个视图(地图)中,如下所示:

- (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 来存储坐标并将其发送到第三个视图。我使用标签并说如果我的pickerview标签等于短语“Burlington City Arts”,那么通过我的“str”NSString将坐标从那个特定的地方发送到我的第三个视图。

最后,我想在那个地方放一个别针的第三个视图的代码:

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 传输到地图视图(第三个视图),但是,这些值是四舍五入的,所以我所做的就是将四舍五入的数字放入我的 IF 语句中。之后,我再次指定了要放置的别针的确切坐标。达达!

*****UPDATE*****

与其在视图 2 和 3 中重复坐标,我现在意识到最好的方法是重新声明每个场地的标签,并将该标签名称传递给第三个视图,这样就不会与坐标混淆。这些坐标在第三个地图视图中只指定一次,这很好。我在我的 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 回答