我有一个导航控制器....和tableview一样:
项目A>
项目B>
项目C>
项目D>
地图>
单击表格单元格会转到项目X的详细信息视图。地图视图显示项目A-D的精确点。注释标注上有一个公开按钮。披露按钮代码执行此操作:
[self.navigationController popViewControllerAnimated:true];
//Now what???
此时我想要做的是在弹出地图视图后推送项目X的详细视图。这样做的正确方法是什么?
答案 0 :(得分:0)
您的方法不正确。你有一个表格视图:
项目A> (单击时按下项目A的详细信息视图)DetailsView(A)
项目B> (单击时按下项目B的详细信息视图)DetailsView(B)
项目C> (单击时按下项目C的详细信息视图)DetailsView(C)
项D> (单击时按下项目D的详细信息视图)DetailsView(D)
地图> (点击时按下地图视图)地图视图> (当您单击公开按钮时,您需要按DetailsView以获取相应的项目并更深入一级)
答案 1 :(得分: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]];
}