Ios Objective-C Mapview只工作一次

Ios Objective-C Mapview只工作一次,ios,objective-c,Ios,Objective C,我的地图视图有问题。当我转到视图时,它可以工作,但当我转到另一个视图并返回到地图视图时,它不再工作。我在NSLog()时得到了正确的纬度和经度,所以这不是问题所在 代码: 根据您显示的内容,您不断添加地图视图(每次VC出现时都会添加一个新的地图视图) 你好像忘了把它取下来 为什么要在ViewDidDisplay中分配地图视图?如果未在视图上删除地图视图,它将在屏幕上多次添加地图视图。如果未删除已添加的地图视图,则可以使用 -(void)viewWillExample方法删除类似的贴图 - (vo

我的地图视图有问题。当我转到视图时,它可以工作,但当我转到另一个视图并返回到地图视图时,它不再工作。我在NSLog()时得到了正确的纬度和经度,所以这不是问题所在

代码:


根据您显示的内容,您不断添加地图视图(每次VC出现时都会添加一个新的地图视图)
你好像忘了把它取下来

为什么要在ViewDidDisplay中分配地图视图?如果未在视图上删除地图视图,它将在屏幕上多次添加地图视图。如果未删除已添加的地图视图,则可以使用 -(void)viewWillExample方法删除类似的贴图

- (void)viewWillAppear:(BOOL)animated
{
    if(map != nil)
   {
    [map removeFromSuperview];
   }
}

它将在添加新地图之前删除以前的地图视图

将此代码添加到您的视图中:

-(void)viewDidDisappear:(BOOL)animated {
  if(mapView)
    {
     [mapView removeFromSuperview];
    }
 }

}
还要删除所有子视图,请执行以下操作:

-(void)viewWillAppear:(BOOL)animated {
    for (UIView *view in self.subviews) {
        [view removeFromSuperview];
     }
}

像这样试试可能会有帮助

- (void) viewDidAppear:(BOOL)animated {

    [super viewDidAppear:(BOOL)animated];

    if(IS_IPHONE5) {

        if (mapView == nil){

            mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0,300,320,300)];
            [mapview setDelegate:self];

        }

    } else {

        if (mapView == nil){

          mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0,250,320,250)];
          [mapview setDelegate:self];
        }
    }


//Add ramaining Code

}
VIEWDID代码

- (void)viewDidDisappear:(BOOL)animated {

    [super viewDidDisappear:(BOOL)animated];
    [mapView removeFromSuperview];
    mapView = nil;

}
视图显示:如果mapview nil,则我们正在创建mapview,否则不会


ViewDidEnglish:如果我们离开视图,我们将删除地图

感谢您的反应,但是如果ViewDidEnglish不好,我必须将其放在哪里?尝试将此添加到ViewWill Appelled我的答案。希望这有帮助。它说“未找到属性子视图”。谢谢你的帮助!在viewDidLoad中创建并添加地图视图。如果需要,可以重置区域并在ViewDidDisplay中添加注释。
- (void)viewDidDisappear:(BOOL)animated {

    [super viewDidDisappear:(BOOL)animated];
    [mapView removeFromSuperview];
    mapView = nil;

}