如何在iOS中使用Storyboard响应注释按钮

时间:2012-03-16 19:39:52

标签: iphone storyboard mkannotationview

我在注释上有正确的按钮,如下所示:

UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
rightButton.tag = [annotation index];

[rightButton addTarget:self action:@selector(annotationViewClick:) forControlEvents:UIControlEventTouchUpInside];

customAnnotationView.rightCalloutAccessoryView = rightButton;

在我的annotationViewClick方法中,我通常会使用'initWithNibName'和pushViewController

导航到详细视图控制器

当我使用故事板时,我该怎么做?我猜我需要一个赛格? 有人请我朝正确的方向努力。

3 个答案:

答案 0 :(得分:2)

通过将IB从源视图控制器(视图控制器本身,而不是其中的任何控件)拖动到目标视图控制器来定义segue。在检查员中为它指定一个标识符。

现在,您可以使用annotationViewClick:以编程方式从您喜欢的任何地方(例如,[self performSegueWithIdentifier:@"myIdentifier" sender:self]方法)执行该segue。 (请注意,所述方法不允许您访问目标视图控制器,因此您可能仍希望实现prepareForSegue:sender:以根据挖掘的注释来配置它。)

答案 1 :(得分:0)

这听起来像是MKMapView

您无法在MKMapView的故事板中添加注释。您必须在MKMapViewDelegate的代码中使用此方法执行此操作:

 - (MKAnnotationView *)mapView:(MKMapView *)aMapView viewForAnnotation:(id<MKAnnotation>)annotation

答案 2 :(得分:0)

  1. 在情节提要中,通过“检查器”窗口,为目标视图控制器提供标识符(名称),例如LocationDetailControllerIdentifier

  2. 在通过点击注释视图的标注附件触发的方法中:

  3. LocationDetailController *ldc = [self.storyboard instantiateViewControllerWithIdentifier:@"LocationDetailControllerIdentifier"];
    // do further customization if needed
    ldc.title = @"Title";
    ...
    //assuming you are using UINavigationController
    [self.navigationController pushViewController:ldc animated:YES];
    

    -