Ios 使用导航控制器从mapView推送局部视图
我有一个选项卡式应用程序,其中一个选项卡是地图视图。用户将pin放置在某个位置,注释标注中有一个“披露”按钮。我希望此按钮可以按到详细视图,其中包含有关注释的更具体的详细信息。我已经搜索了相关的问题,但似乎没有一个问题和我有相同的问题。单击“公开”按钮时,应用程序崩溃,出现异常:“NSInvalidArgumentException”,原因:“-[MapView tableView]:发送到实例0x8434360的无法识别的选择器” 这就是我尝试推送局部视图控制器的地方。log语句返回一个导航控制器,因此不存在向nil发送消息的问题Ios 使用导航控制器从mapView推送局部视图,ios,objective-c,uinavigationcontroller,mkmapview,pushviewcontroller,Ios,Objective C,Uinavigationcontroller,Mkmapview,Pushviewcontroller,我有一个选项卡式应用程序,其中一个选项卡是地图视图。用户将pin放置在某个位置,注释标注中有一个“披露”按钮。我希望此按钮可以按到详细视图,其中包含有关注释的更具体的详细信息。我已经搜索了相关的问题,但似乎没有一个问题和我有相同的问题。单击“公开”按钮时,应用程序崩溃,出现异常:“NSInvalidArgumentException”,原因:“-[MapView tableView]:发送到实例0x8434360的无法识别的选择器” 这就是我尝试推送局部视图控制器的地方。log语句返回一个导航控
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
}
我在应用程序委托中实例化了导航控制器:
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方法的任何信息。或者为什么它在这种情况下不起作用。我强烈建议使用故事板。创建一个tabbar控制器。创建一个带有2个ViewController的navigationcontroller:第一个是map iewcontroller,第二个是detailviewcontroller。将此navigationcontroller存储为TabbarController视图控制器之一。
在CalloutAccessoryStapped方法调用performSegue时,使用您在storyboatd中定义的标识符。我发现了问题。这是我的detail-view-viewWillAspect方法中的一段代码,我在其中重新加载了tableView。谢谢你的帮助 异常是MapView而不是MKMapView,那么您是否有一个名为MapView的自定义类?您是否在调试器中逐行识别了导致该异常的确切行?会不会是选现场的什么东西?可能这个异常发生在DetailViewController的viewDidLoad中,它在被推送时被调用。是的,我有一个名为Map View的ViewController类,它包含MKMapView。导致异常的确切行是推送局部视图。细节视图之所以有效,是因为使用tab view控制器,我还有一个包含所有注释对象的tableView和这些作品的细节视图,并且与我试图从地图中推送的细节视图相同。好的,我想我将不得不尝试改为使用故事板。谢谢
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];