0

シンプルな注釈からのコールアウトで 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];
}

ビューコントローラーには行きませんが、言い続けます

Unbalanced calls to begin/end appearance transitions for <lbhProfileViewController: 0x1f017ec0>.

実際には lbhProfileViewController で、ストーリーボード内で他のビューコントローラーを介して接続されています。しかし、このアクセサリ コールアウトでは、手動で呼び出したいと思います。ご覧のとおり、私は持っています

//[self performSegueWithIdentifier:@"profileSegue" sender:self];

しかし、代わりにこのメソッドを使用すると、依然として不均衡な呼び出しが発生します。

4

2 に答える 2

0

私は答えを見つけました。

ViewDidDisappear メソッドで、self.navigationController の pop メソッドを実行していたので、これと衝突しました。

しかし、はい、これは役に立ちます ありがとう!

于 2012-12-20T10:15:39.753 に答える
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];
     }
}

lbhProfileViewControllerまた、これを使用するには、マップ デリゲート メソッドを呼び出すビュー コントローラーから に直接接続するセグエが必要です。

于 2012-12-19T17:35:35.643 に答える