处理开始/结束外观转换的不平衡调用

时间:2012-12-19 17:18:17

标签: ios mkmapview segue viewcontroller

我正在使用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];

在代码中,但如果我使用此方法,它仍然会给我不平衡的调用。

2 个答案:

答案 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方法,所以它与此发生了冲突。

但是,这有助于谢谢!