我正在使用mapView和一个简单注释的标注。我使用了下面的委托方法
- (void)mapView:(MKMapView *)_mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
lbhProfileMapPoint *mp = (lbhProfileMapPoint *) view.annotation;
NSLog(@"mp objectID: %@", mp.objectID);
self.objectId = mp.objectID;
[[lbhVariables sharedInstance] setMapViewChosenObjectId:self.objectId];
//[self performSegueWithIdentifier:@"profileSegue" sender:self];
lbhProfileViewController *pvc = [[lbhProfileViewController alloc] init];
[pvc setObjectId:self.objectId];
[self.navigationController pushViewController:pvc animated:NO];
}
它不会转到viewcontroller而是继续说
Unbalanced calls to begin/end appearance transitions for <lbhProfileViewController: 0x1f017ec0>.
实际上是lbhProfileViewController,它通过其他视图控制器在我的故事板中连接。但是有了这个配件标注,我想手动调用它。如你所见,我有
//[self performSegueWithIdentifier:@"profileSegue" sender:self];
在代码中,但如果我使用此方法,它仍然会给我不平衡的调用。
答案 0 :(得分:0)
如果您使用performSegueWithIdentifier:sender:
方法,则还应使用prepareForSegue:sender:
方法。您在prepareForSegue:sender:
方法中的代码将是这样的:
-(void)prepareForSegue:(UIStoryBoardSegue*) segue sender:(id) sender
{
if([segue.identifier isEqualToString:@"profileSegue"]){
lbhProfileViewController *pvc = [segue destinationViewController];
[[segue destinationViewController]setObject:sender.objectId];
}
}
同样要使用它,你需要一个segue直接连接到视图控制器中的lbhProfileViewController
,调用map delegate方法。
答案 1 :(得分:0)
我找到了答案。
在ViewDidDisappear方法中,我正在做一个self.navigationController pop方法,所以它与此发生了冲突。
但是,这有助于谢谢!