1

我有一个选项卡式应用程序,其中一个选项卡是地图视图。用户将图钉放置在某个位置,并且在注释标注中有一个披露按钮。我希望此按钮可以推送到包含有关注释的更具体详细信息的详细信息视图。我已经搜索了相关问题,但似乎没有一个问题与我有同样的问题。单击公开按钮时,应用程序崩溃并出现异常:'NSInvalidArgumentException',原因:'-[MapView tableView]: unrecognized selector sent to instance 0x8434360'

这是我尝试推送详细视图控制器的地方。log 语句返回一个导航控制器,因此向 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

我强烈建议使用故事板。创建一个标签栏控制器。创建一个带有2个viewcontroller的navigationcontroller:第一个是地图iewcontroller,第二个是detailviewcontroller。将此导航控制器设为 tabbarcontrollers viewcontrollers 之一。在您的 calloutaccessorytapped 方法中,使用您在 storyboatd 中定义的标识符调用 performSegue。

于 2013-09-08T08:50:21.037 回答
0

我发现了问题。这是我重新加载 tableView 的详细视图 viewWillAppear 方法中的一段代码。不过感谢您的帮助!

于 2013-09-08T19:10:24.910 回答