2012-01-22 11 views
1

私はIOS5でそのユーザーのストーリーボードのiphoneアプリで作業しています。私は、注釈コールアウトでマップキットを使用するストーリーボードを作成しました。ストーリーボードエディタを使用して、ボタンとテーブル行の選択のためにプッシュセグをワイヤアップすることができました。私はMapKitのカスタムコールアウトの経験はありますが、コールアウトからストーリーボードに定義されたビューコントローラをどのようにプッシュするのか分かりません。私は[self.navigationController pushViewController:abc animated:YES]を使用しようとしていましたが、これを行うには、ストーリーボードからView Controllerを取得するか、新しいViewControllerを初期化する必要があります。 NIB名がないので、NIB名にアクセスすることはできません。ストーリーボードに定義されているViewControllerのインスタンスにアクセスするにはどうすればよいですか?ストーリーボードエディタを使用してプッシュシーケンスをカスタムマップ注釈コールアウトに配線する方法はありますか?IOS5でストーリーボードでMapcall

ありがとうございます。

+1

ただストーリーボードでのViewControllerをインスタンス化する方法を説明したリンクを見つけました myViewController * myVC = [ストーリーボードinstantiateViewControllerWithIdentifier:@ "myViewController"]; これは機能しました。私はこのコードを使用してインスタンス化した後、View Controllerをプッシュすることができました。私の問題は解決されました。 – aullman

+0

あなたの解決策を質問の答えとして追加し、回答を受け入れてください。あなたの質問に対するあなた自身の答えを受け入れることは大丈夫です。 –

答えて

1

ビューコントローラ間でセグを作成するには、コントロールを1つのビューコントローラから別のビューコントローラにドラッグしてプログラムで実行します。次にMKMapViewDelegateメソッドの- (void)mapView:annotationView:calloutAccessoryControlTapped:では、ストーリーボードにセグメントを指定している限り、プログラムでセグを実行できます。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{ 
    // I've chosen to pass the annotation view as the sender here. 
    // I'm assuming this view controller will be configured with data that 
    // is backing the annotation view. By passing the view, you will be able 
    // to inspect it and it's backing annotation in `prepareForSegue:sender:` 
    [self performSegueWithIdentifier:@"ShowSomeViewController" sender:view]; 
} 
+0

ありがとうございます。それは非常に良い選択肢です。私はそれを試してみる。 – aullman

1

ボタンを追加し、それをビューコントローラにドラッグしてコントロールを実行しました。その後、私はそれが隠されていることを確認するためにボタンの隠されたプロパティを使用します。マップビューを他のView Controllerにドラッグするだけでは、コントロールできません。そのためにボタンを使用する必要があります。 segueに識別子を付けるようにしてください。 UIStoryboard *絵コンテ= [UIStoryboard storyboardWithName: "MainStoryboard" バンドル@:[NSBundle mainBundle]];

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 
    [self performSegueWithIdentifier:@"detailSegue" sender:view]; 
} 
+0

これをどのように使用して、いくつかのデータをセグに渡しますか?私はprepareForSegueまたはshouldPerformSegueを使ってみました...しかし、これらの2つのメソッドを渡すようです – user1372829

関連する問題