在没有segue锚点的mapkit注释上定位segue popover

时间:2012-03-02 18:48:47

标签: annotations mapkit storyboard uipopovercontroller segue

我在xCode 4.2中有一个使用故事板的项目。我正在使用mapkit框架。我试图通过用户用segue选择的注释来定位弹出窗口。

这就是我所拥有的。

if([view.annotation isKindOfClass:[ContentPoint class]]) {
    NSLog(@"I see this in my log");

    [self performSegueWithIdentifier:@"ViewAudioSegue" sender:mapView.selectedAnnotations];
}

这会调用正确的segue,但由于segue具有mapview的锚点,因此弹出窗口显示在地图的底部而不是选定的注释旁边。我尝试了不同的发件人(视图,地图等),但我得到了相同的结果。有没有办法以编程方式设置锚点?这是我没有手动设置锚“ * 由于未捕获的异常导致应用程序'NSInternalInconsistencyException'而得到的错误,原因是:'UIStoryboardPopoverSegue必须从条形按钮项或视图中显示。'”

2 个答案:

答案 0 :(得分:0)

我找到了答案

MapKit deselect Annotation and popover does not animate

它不使用segues,但它允许我删除项目中的所有nib文件,只使用故事板。

答案 1 :(得分:0)

您还可以创建一个隐藏按钮,将弹出窗口固定到按钮上,并在选中时将按钮放在注释上。以下是我在单独问题中使用tableview的类似解决方案,我回答https://stackoverflow.com/a/14514837/1712892。主要区别在于您必须在屏幕上计算注释的位置并将anchorButton移动到那里,然后在执行segue时将自定义注释作为发送方传递。我实际上是在同一个项目中这样做的。如果我有时间,我将在今晚稍后用例子编辑。