【发布时间】:2013-09-08 07:37:33
【问题描述】:
我有一个选项卡式应用程序,其中一个选项卡是地图视图。用户将图钉放置在某个位置,并且在注释标注中有一个披露按钮。我希望此按钮可以推送到包含有关注释的更具体详细信息的详细信息视图。我已经搜索了相关问题,但似乎没有一个问题与我有同样的问题。单击公开按钮时,应用程序崩溃并出现异常:'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 的导航控制器的任何信息。或者为什么它在这种情况下不起作用。
【问题讨论】:
-
异常显示“MapView”而不是“MKMapView”,所以你有一个名为“MapView”的自定义类吗?您是否确定了导致该异常的 exact 行(在调试器中逐行执行代码)?它可能是 setSelectedSpot 中的东西吗?也许异常发生在 DetailViewController 的 viewDidLoad 中,它在被推送时被调用。
-
是的,我有一个名为 Map View 的 ViewController 类,其中包含 MKMapView。导致异常的确切行正在推送详细视图。详细视图有效,因为使用选项卡视图控制器,我还有一个 tableView,其中包含所有注释对象和这些作品的详细视图,并且与我试图从地图中推送的详细视图相同。
标签: ios objective-c uinavigationcontroller mkmapview pushviewcontroller