我有一个带有多个注释的Map,我希望母鸡用户点击pin来调用另一个视图。
我正在使用故事板。
使用.xib就是这样。
...
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
...
[rightButton addTarget:self
action:@selector(showDetails:)
forControlEvents:UIControlEventTouchUpInside];
}
-(void)showDetails:(UIButton*)sender {
OfferDetailViewController *detail = [[OfferDetailViewController alloc] init];
detail.context = context;
Offers *offer = [arr objectAtIndex:indexPath.row];
//detail.offer = offer;
[self.navigationController pushViewController:detail animated:YES];
}
...
答案 0 :(得分:2)
您可以在视图之间创建一个Segue,并在StoryBoard中为其指定一个标识符。然后执行“performSegueWithIdentifier”来触发它。因此,在用户点击调用的方法中,如果您的Segue具有标识符“FrameSegue”,则调用“performSegueWithIdentifier”,如下所示
[self performSegueWithIdentifier:@"FrameSegue" sender:sender];
如果您需要先进行任何设置以将数据传递到另一个视图,您可以在“prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender”中设置转换。
我希望有所帮助。
回答下面的评论: -
如果您将Segue标识为“FrameSegue”,并且您希望将视图“MyFirstView”中的字符串传递给名为“MySecondView”的第二个视图,并将其存储在第二个视图中的myData中。
试试这个:
在MyFirstView.m
中-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"FrameSegue"]) {
MySecondView *secondView = [segue destinationViewController];
[secondView setMyData:myString];
}
}
- (IBAction)tappedThing:(id)sender {
NSString *myString = @"A String";
[self performSegueWithIdentifier:@"FrameSegue" sender:sender];
}
答案 1 :(得分:0)
实现mapView:annotationView:calloutAccessoryControlTapped:
方法并将showDetail:
实现放在那里,可能会对相关的注释视图进行一些条件测试。