1

タブの 1 つがマップ ビューであるタブ付きアプリケーションがあります。ユーザーが場所にピンを配置すると、注釈の吹き出しに開示ボタンがあります。このボタンを押すと、注釈に関するより具体的な詳細が表示される詳細ビューが表示されます。関連する質問を検索しましたが、私と同じ問題を抱えているものはないようです。開示ボタンをクリックすると、次の例外でアプリケーションがクラッシュします: 'NSInvalidArgumentException', reason: '-[MapView tableView]: unrecognized selector sent to instance 0x8434360'

これは、詳細ビュー コントローラーをプッシュしようとする場所です。ログ ステートメントはナビゲーション コントローラーを返すため、メッセージを nil に送信することは問題ではありません。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control

{

DetailViewController *dvc = [[DetailViewController alloc] init];
NSLog(@"%@", [self navigationController]);
[[SpotsStore defaultStore] setSelectedSpot:[view annotation]];
[[self navigationController] pushViewController:dvc animated:YES];

}

アプリ デリゲートでナビゲーション コントローラーをインスタンス化しました。

UINavigationController *mapnc = [[UINavigationController alloc] initWithRootViewController:mv];
[mapnc setNavigationBarHidden:NO];
[[mapnc tabBarItem] setTitle:@"Map"];
[[mapnc tabBarItem] setImage:[UIImage imageNamed:@"mapicon.png"]];
[tbc setViewControllers:[NSArray arrayWithObjects:nc,mapnc, nil]];
// nc is a different navigation controller I instantiated earlier.
[[self window] setRootViewController:tbc];

私は本当にこれについて何か助けが欲しいか、正しい方向に私を送ってください. メソッドtableViewを送信するナビゲーションコントローラーについては何も見つかりませんでした。または、この場合に機能しない理由。

4

2 に答える 2

0

問題が見つかりました。これは、tableView をリロードした詳細ビュー viewWillAppear メソッドのコードの一部でした。でも助けてくれてありがとう!

于 2013-09-08T19:10:24.910 に答える
0

ストーリーボードの使用を強くお勧めします。タブバーコントローラーを作成します。2 つのビュー コントローラーを持つナビゲーション コントローラーを作成します。1 つ目はマップ iewcontroller、2 つ目はディテールビュー コントローラーです。このナビゲーション コントローラをタブバー コントローラまたはビュー コントローラの 1 つにします。calloutaccessorytapped メソッドで、storyboatd で定義した識別子を使用して performSegue を呼び出します。

于 2013-09-08T08:50:21.037 に答える