0

我有一个导航控制器....和像这样的tableview:

项目 A >
项目 B >
项目 C >
项目 D >
地图 >

单击表格单元格当然会带您进入项目 X 的​​详细信息视图。地图视图显示项目 AD 的精确定位。注释标注上有一个披露按钮。披露按钮代码执行以下操作:

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

此时我想做的是在弹出地图视图后推送项目 X 的​​详细视图。这样做的正确方法是什么?

4

2 回答 2

0

你的方法不正确。你有一个表格视图:

项目 A >(单击时推送项目 A 的详细信息视图) DetailsView (A)
项目 B >(单击时推送项目 B 的详细信息视图) DetailsView (B)
项目 C >(单击时推送项目 C 的详细信息视图) DetailsView (C)
Item D >(点击后推送项目 D 的详细信息视图) DetailsView (D)
地图 >(点击时推送地图视图)地图视图 >(点击披露按钮时,您需要推送 DetailsView 以获取适当的项目并更深一层)

于 2012-04-17T12:19:52.200 回答
0

对此并不感到自豪,但是...我确实想出了一个解决方案。我根据用于设置 tableview 的数组的索引为各个注释设置标签值。

-(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 回答