calloutaccessorycontroltapped或prepareForSegue(call

2019-10-16 18:57发布

我有一个地图和地图有注释,并且我可以看到在表视图这些注释为细胞,然后我可以看到的细节对于i在xcode中选择的像主细节项目的任何细胞

像这样

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue identifier] isEqualToString:@"showDetail"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
Object *object = [self.objects objectAtIndex:indexPath.row];
DetailsViewController *detailsViewController = segue.destinationViewController;
detailsViewController.detailItem = object;
}

代码是用于在表视图细胞这将推动到详细视图

但我想,当他按下UIButtonTypeDetailDisclosure在注释中的用户,则该按钮会去同DetailsViewController该小区将转到表视图

是否有可能做到这一点 ?

我看了一下calloutAccessoryControlTapped但我不知道如何使已被选定为我在DetailsViewController已经宣布detailItem注释

谢谢 : )

Answer 1:

这是一个有点不清楚你在问什么。 这里有一对夫妇的猜测和他们的答案:

如何执行从地图上标注附件按钮SEGUE?

从IB控制(表单元格,按钮等)拖动是一个很好的方法,使塞格斯因为UIKit中可以为你搞定一切 - 当控制被窃听,它自动地执行SEGUE。 但有些时候,否则你可能想在执行赛格瑞编程控制控件不能创建塞格斯,和时间。 对于这一点,你从视图控制器本身 IB拖动创建SEGUE; 给SEGUE一个唯一的标识符,然后在您的视图控制器,你可以调用[self performSegueWithIdentifier:@"myIdentifier"]每当你想要的SEGUE发生。

在这种情况下,你可能会调用来自内部mapView:annotationView:calloutAccessoryControlTapped:

我如何通过我的模型对象到下一个视图控制器在这种赛格瑞的?

想必你的模型对象符合MKAnnotation协议,你将它们添加到与地图addAnnotation(s): 在这种情况下,当你的地图代表的(大概的视图控制器的) mapView:annotationView:calloutAccessoryControlTapped:方法被调用时,所述第二参数具有与相应的参考MKAnnotationView 。 这个类有一个属性annotation ,这将重新指向你的模型对象。

当然,在这个方法中,你只是打电话performSegueWithIdentifier:所以你还没有进入到目标视图控制器。 因此,你需要抓住这个模型对象引用(比如,在伊娃)现在,然后你prepareForSegue:sender:实现可以将它传递到目的地视图控制器。



文章来源: calloutaccessorycontroltapped or prepareForSegue