0

私はナビゲーションコントローラーを持っています....そしてテーブルビューは次のようになります:

アイテムA >
アイテムB >
アイテムC >
アイテムD >
マップ >

表のセルをクリックすると、もちろん項目 X の詳細ビューが表示されます。マップ ビューには、アイテム AD のピンポイントが表示されます。注釈吹き出しに開示ボタンがあります。開示ボタンのコードは次のことを行います。

[self.navigationController popViewControllerAnimated:true];
//Now what???

この時点でやりたいことは、マップ ビューをポップした後、アイテム X の詳細ビューをプッシュすることです。これを行う適切な方法は何ですか?

4

2 に答える 2

0

これは自慢ではありませんが...解決策を思いつきました。テーブルビューの設定に使用される配列のインデックスに基づいて、個々の注釈のタグ値を設定しました。

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {
//So, we clicked that disclosure button
//TODO: This is really hacky...  What is proper way to do this?
ServicesViewController *vc = [self.navigationController.viewControllers objectAtIndex:1];  
[vc infoButtonPressed:control.tag];

}

ServicesViewController でこれを行うことができます。

- (void) infoButtonPressed:(NSInteger) index {

// decided against this first step, as graver's answer explains, it does not really make sense
//[self.navigationController popViewControllerAnimated:false];

//index should be nav array index we want to push
//so simulate a table-row click
[self tableView:self.tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0]];

}

于 2012-04-23T03:26:14.017 に答える
0

あなたのアプローチは正しくありません。テーブルビューがあります:

アイテム A > (クリックするとアイテム A の詳細ビューがプッシュされます) DetailsView (A)
アイテム B > (クリックするとアイテム B の詳細ビューがプッシュされます) DetailsView (B)
アイテム C > (クリックするとアイテム C の詳細ビューがプッシュされます) DetailsView (C)
アイテム D > (クリックすると、アイテム D の詳細ビューをプッシュします) DetailsView (D)
マップ > (クリックすると、マップ ビューをプッシュします) マップ ビュー > (開示ボタンをクリックすると、詳細ビ​​ューをプッシュする必要があります適切な項目を選択して、さらに 1 レベル深く進みます)

于 2012-04-17T12:19:52.200 に答える