Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用导航控制器从mapView推送局部视图_Ios_Objective C_Uinavigationcontroller_Mkmapview_Pushviewcontroller - Fatal编程技术网

Ios 使用导航控制器从mapView推送局部视图

Ios 使用导航控制器从mapView推送局部视图,ios,objective-c,uinavigationcontroller,mkmapview,pushviewcontroller,Ios,Objective C,Uinavigationcontroller,Mkmapview,Pushviewcontroller,我有一个选项卡式应用程序,其中一个选项卡是地图视图。用户将pin放置在某个位置,注释标注中有一个“披露”按钮。我希望此按钮可以按到详细视图,其中包含有关注释的更具体的详细信息。我已经搜索了相关的问题,但似乎没有一个问题和我有相同的问题。单击“公开”按钮时,应用程序崩溃,出现异常:“NSInvalidArgumentException”,原因:“-[MapView tableView]:发送到实例0x8434360的无法识别的选择器” 这就是我尝试推送局部视图控制器的地方。log语句返回一个导航控

我有一个选项卡式应用程序,其中一个选项卡是地图视图。用户将pin放置在某个位置,注释标注中有一个“披露”按钮。我希望此按钮可以按到详细视图,其中包含有关注释的更具体的详细信息。我已经搜索了相关的问题,但似乎没有一个问题和我有相同的问题。单击“公开”按钮时,应用程序崩溃,出现异常:“NSInvalidArgumentException”,原因:“-[MapView tableView]:发送到实例0x8434360的无法识别的选择器”

这就是我尝试推送局部视图控制器的地方。log语句返回一个导航控制器,因此不存在向nil发送消息的问题

- (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];